1. 程式人生 > >linux操作系統的調度策略

linux操作系統的調度策略

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操作系統的調度策略