linux 進程調度類型 總結


進程按照調度類型可以分爲:


SCHED_FIFO先進先出的實時進程,如果沒有其它更高優先級的可運行實時進程,就可以一直使用cpu運行。對於這種進程,時間片長度是沒有意義的。


SCHED_RR時間片輪轉的實時進程,所具有相同優先級(且都是當前情況下優先級最高)的SCHED_RR以時間片輪轉的方式公平使用cpu


SCHED_NORMAL時間片輪轉的普通進程,時間片用完之後變成過期進程,所有進程都成爲過期進程之後,再統一把過期進程轉變爲活動進程。


時間片輪轉的普通進程SCHED_NORMAL)優先級分爲靜態優先級動態優先級。內核用從100(最高優先級)到139(最低優先級)表示普通進程的靜態優先級。新進程總是繼承父進程的靜態優先級。通過nice()setpriority(),用戶可以改變自己擁有的進程靜態優先級。靜態優先級決定了進程的基本時間片,如下:


Linux操作系統中動態優先級是指:調度程序跟蹤監測進程,對於較長沒使用cpu的進程動態提升優先級,對於較長時間使用cpu的進程動態的降低優先級。動態優先級範圍是100(最高優先級)~139(最低優先級),經驗公式爲:



Bonus範圍0~10,值小於5表示降低動態優先級,值大於5表示增加動態優先級。


時間片輪轉的實時進程(SCHED_RR的優先級分爲靜態優先級實時優先級。靜態優先級初始值從父進程繼承而得,決定了時間片的基本長度,值越小,基本時間片越長,與SCHED_NORMAL的靜態優先級相似。實時優先級範圍爲1(最高優先級)~99(最低優先級)。調度程序總是讓優先級高的進程運行,用戶可以通過sched_setparam()sched_setscheduler()改變進程的實時優先級。實時優先級決定其在運行隊列中的位置,即調度選擇哪一個進程是由它決定。


先進先出的實時進程(SCHED_FIFO的優先級只有實時優先級。




發佈了40 篇原創文章 · 獲贊 42 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章