linux操作系統的調度策略
阿新 • • 發佈:2019-05-12
bat 方式 dea stat 數值 否則 linu linux操作系統 sta
linux的進程分為兩種
1.實時進程,優先級高,操作系統會優先執行這種進程
2.普通進程,大多數的進程都是這種進程
調度策略
unsigned int policy;
調度策略的定義
#define SCHED_NORMAL 0
#define SCHED_FIFO 1
#define SCHED_RR 2
#define SCHED_BATCH 3
#define SCHED_IDLE 5
#define SCHED_DEADLINE 6
配合調度策略的還有剛才我們說的優先級
int prio, static_prio, normal_prio;
unsigned int rt_priority;
優先級其實就是一個數值,實時進程的取值範圍是0-99,普通進程的取值範圍是100-139,
數字越小,優先級越高,可以看出來,所有實時進程的優先級都比普通進程的優先級高
實時調度策略
SCHED_FIFO SCHED_RR SCHED_DEADLINE
這三種調度策略都是針對實時進程的調度策略
SCHED_FIFO 這種調度策略是遵從先到先得的規則,
但是如果某個進程的優先級比另一個進程的優先級高
那麽可以搶占該進程,也就是說高優先級的進程可以搶占低優先級的進程
SCHED_RR(輪流調度算法),采用時間片的方式,相同優先級的進程用完cpu的時間片後,就會被放到隊列尾部,保證公平性
SCHED_DEADLINE
因為對於實時進程來說,進程需要在某個時間周期內執行完,否則就會出錯
所以這種策略就是優先執行deadline時間距離當前時間最近的進程
linux操作系統的調度策略