linux進程調度:
無論是在批處理系統還是分時系統中,用戶進程數一般都多于處理機數、這將導致它們互相爭奪處理機。
另外,系統進程也同樣需要使用處理機。
這就要求進程調度程序按一定的策略,動態(tài)地把處理機分配給處于就緒隊列中的某一個進程,以使之執(zhí)行。
linux進程調度基本屬性:
1.多態(tài)性 從誕生、運行,直至消滅
2.多個不同的進程可以包括相同的程序
3.三種基本狀態(tài) 它們之間可進行轉換
4.并發(fā)性并發(fā)執(zhí)行的進程輪流占用處理器
linux進程調度原理:
調度程序運行時,要在所有可運行狀態(tài)的進程中選擇最值得運行的進程投入運行。
在每個進程的task_struct結構中有以下四項:policy、priority、counter、rt_priority。
這四項是選擇進程的依據。
其中,policy是進程的調度策略,用來區(qū)分實時進程和普通進程,實時進程優(yōu)先于普通進程運行;
priority是進程(包括實時和普通)的靜態(tài)優(yōu)先級;
counter是進程剩余的時間片,它的起始值就是priority的值;
由于counter在后面計算一個處于可運行狀態(tài)的進程值得運行的程度goodness時起重要作用,因此,counter也可以看作是進程的動態(tài)優(yōu)先級。
rt_priority是實時進程特有的,用于實時進程間的選擇。