《Linux內核設計與實現》讀書筆記——進程調度

進程調度程序

進程調度程序負責決定將哪個進程投入運行,何時運行以及運行多長時間。

在運行態進程之間分配有限的處理器時間資源。

多任務系統分爲搶佔式和非搶佔式。

Linux使用搶佔式。(大部分現代系統都是搶佔式)

 

策略

IO消耗型進程:進程大部分時間在提交IO請求或者等待IO請求,比如GUI、網絡相關進程等。

處理器消耗型進程:把大多時間用於執行代碼的進程。

進程優先級:

nice:-20~+19,值越大優先級越低;(Linux系統中nice值表示時間片的比例)

實時優先級:0~99,值越大優先級越高;

時間片:一個數值,它表明進程在搶佔前所能持續運行的時間。

IO消耗型不需要長的時間片,而處理器消耗型的進程則希望越長越好。

時間片過長將導致系統對交互的響應表現欠佳。

Linux的CFS(完全公平調度算法)調度器並沒有直接分配時間片到進程,它是將處理器使用按比劃分給進程。

所以進程所獲得的處理器時間其實跟系統負載相關。

且這個比例受nice值影響,nice值作爲權重將調整進程所使用的處理器時間使用比

 

實現

Linux調度器以模塊方式提供。

這種模塊化結構成爲調度器類

CFS是針對普通進程的調度類(SCHED_NORMAL),位於kernel\sched_fair.c。

Linux還提供了兩種實時調度策略:SCHED_FIFO和SCHED_RR。

/*
 * Scheduling policies
 */
#define SCHED_NORMAL        0
#define SCHED_FIFO      1
#define SCHED_RR        2

 

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