linux 多核 進程/線程調度 學習

首先要明確的是,按照Linux Kernel Development 2裏面的說法,LINUX和其他OS 比如WINDOWS, SOLARIS之間一個很大的不同是沒有嚴格定義的線程(thread)。那麼你也許會問,如果LINUX中沒有線程,那麼如何來表示類似WINDOWS 線程的那種執行觀念呢?答案是LINUX中,PROCESS(進程)可以當作線程。

那麼你也許又會問,WINDOWS中的多線程程序在LINUX中是怎樣表示的呢?具體來說,LINUX中的PROCESS有2種。一種是獨立的 PROCESS。自己有自己的地址空間,資源列表,代碼等。另外一種PROCESS是和其他PROCESS共享一個地址空間,資源列表的。這種 PROCESS就類似於WINDOWS中的線程。

 

爲了避免將linux process與廣義上的進程,線程搞混,我們稱之爲task 好了(事實上 linus 也是這麼叫的)

在linux 系統(2.6)中,每個核(core)都擁有一個運行隊列。運行隊列中的task 按照CFS 調度算法進行調度。

爲了實現不同核的 負載均衡,會把一個任務從負載高的核遷移到負載低的核。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章