如何在CPU上执行内核线程 这些内核线程是否像普通用户空间进程一样被调度程序调度? 或者当某些事件发生时他们会醒来?内核线程是否被scheduller调度?
root 2 0 0 Nov30 ? 00:00:00 [kthreadd]
root 3 2 0 Nov30 ? 00:00:03 [ksoftirqd/0]
如何在CPU上执行内核线程 这些内核线程是否像普通用户空间进程一样被调度程序调度? 或者当某些事件发生时他们会醒来?内核线程是否被scheduller调度?
root 2 0 0 Nov30 ? 00:00:00 [kthreadd]
root 3 2 0 Nov30 ? 00:00:03 [ksoftirqd/0]
回答这两个问题是肯定的 - 内核线程被安排就像用户线程和它们通常阻止挂起某些事件(每内核线程不同的事件)。
Oky正确,但他们为什么被表示为过程? – user3718463 2014-12-03 16:38:12
@ user3718463你认为他们是什么? – 2014-12-08 21:07:03
@ user3718463它们不表示为进程。他们是流程。或者更准确地说,它们只是一堆可调度的任务(又名线程),恰好没有用户空间部分。 – gby 2014-12-09 03:10:35
答案是肯定的。
内核线程和用户空间进程之间的唯一主要区别是内核线程的task-> mm = NULL。
因此,它们没有明显的地址空间。休息对于内核线程和用户空间进程来说非常相似。
这应该回答你的大部分问题:http://stackoverflow.com/questions/8463741/how-linux-handles-threads-and-process-scheduling – askb 2014-12-03 05:12:52