2010-03-12 168 views
4

Linux内核调度程序是init进程的一部分吗?我的理解是,它是内部管理的内核线程的一部分,内部管理对top用户或ps用户不可见。请纠正我的理解。Linux内核线程 - 调度程序

是否可以通过任何内核调试器查看标准内核线程以查看标准线程如何占用cpu活动?

-Kartlee

回答

6

内核线程可以通过“顶部”和“PS”中可以看出,可以通过具有零VM大小(它们没有用户空间,因此没有用户空间的存储器映射)来区分。

这些是由kernel_thread(或其朋友)创建的。有些工具会为每个CPU创建一个线程并将其与CPU绑定,因此您可以在PS列表中看到诸如aio/0 aio/1之类的东西。

另外一些工作是通过几个延期执行机制完成的,并归因于其他任务,通常称为“事件/ 0”(每个CPU一个)。在中断中“真正”花费的时间不计算在任何地方(它只是以当时在该CPU上发生的任何任务为代价运行)。

+1

还值得指出的是绝大多数内核代码,包括调度程序,都在正常进程的上下文中执行。通过这种方式,大量的内核就像一个库,而不是一个独立的进程。 – caf 2010-03-13 09:27:04

+0

pid 0属于schedular,而PID 1用于init进程。 – Tejas 2016-02-22 07:20:27

1

1)Linux Kernel scheduler是init进程的一部分吗?

- > no,scheduler是一个子系统,init进程只是进程而已,并且是由调度程序调度的。

2)我的理解是,它是内部管理的内核线程的一部分,内部管理对于用户来说无论是top还是ps都是不可见的。请纠正我的理解。

- >它是一种内核线程,通常不会显示给用户。

3)是否可以通过任何内核调试器查看标准内核线程以查看标准线程如何占用cpu活动?

- >是!