2014-12-03 108 views
0

如何在CPU上执行内核线程 这些内核线程是否像普通用户空间进程一样被调度程序调度? 或者当某些事件发生时他们会醒来?内核线程是否被scheduller调度?

root   2  0 0 Nov30 ?  00:00:00 [kthreadd] 
root   3  2 0 Nov30 ?  00:00:03 [ksoftirqd/0] 
+0

这应该回答你的大部分问题:http://stackoverflow.com/questions/8463741/how-linux-handles-threads-and-process-scheduling – askb 2014-12-03 05:12:52

回答

2

回答这两个问题是肯定的 - 内核线程被安排就像用户线程和它们通常阻止挂起某些事件(每内核线程不同的事件)。

+0

Oky正确,但他们为什么被表示为过程? – user3718463 2014-12-03 16:38:12

+0

@ user3718463你认为他们是什么? – 2014-12-08 21:07:03

+0

@ user3718463它们不表示为进程。他们是流程。或者更准确地说,它们只是一堆可调度的任务(又名线程),恰好没有用户空间部分。 – gby 2014-12-09 03:10:35

0

答案是肯定的。

内核线程和用户空间进程之间的唯一主要区别是内核线程的task-> mm = NULL。

因此,它们没有明显的地址空间。休息对于内核线程和用户空间进程来说非常相似。