2014-12-03 105 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。

因此,它們沒有明顯的地址空間。休息對於內核線程和用戶空間進程來說非常相似。