作業系統 linux 核心的三種程序排程方法

2021-09-07 11:53:05 字數 2123 閱讀 6256

1。sched_other 分時排程策略;

2。sched_fifo 實時排程策略。先到先服務;

3,sched_rr 實時排程策略,時間片輪轉 。

實時程序將得到優先呼叫,實時程序依據實時優先順序決定排程權值,分時程序則通過nice和counter值決定權值,nice越小,counter越大,被排程的概率越大。也就是以前使用了 cpu 最少的程序將會得到優先排程。

shced_rr 和 sched_fifo 的不同:

當採用 shced_rr 策略的程序的時間片用完,系統將又一次分配時間片。並置於就緒佇列尾。放在佇列尾保證了全部具有同樣優先順序的rr任務的排程公平。    

sched_fifo 一旦占用 cpu 則一直執行。一直執行直到有更高優先順序任務到達或自己放棄。

假設有同樣優先順序的實時程序(依據優先順序計算的排程權值是一樣的)已經準備好,fifo時必須等待該程序主動放棄後才幹夠執行這個優先順序同樣的任務。

而rr能夠讓每乙個任務都執行一段時間。

同樣點:

rr 和 fifo 都僅僅用於實時任務。

建立時優先順序大於0(1-99)。

依照可搶占優先順序排程演算法進行。

就緒態的實時任務馬上搶占非實時任務。

全部任務都採用linux分時排程策略時,

1,建立任務指定採用分時排程策略。並指定優先順序nice值(-20~19)。

2,將依據每乙個任務的nice值確定在cpu上的執行時間(counter)。

3。假設沒有等待資源,則將該任務增加到就緒佇列中。

4。排程程式遍歷就緒佇列中的任務。通過對每乙個任務動態優先順序的計算(counter+20-nice)結果。選擇計算結果最大的乙個去執行,當這 個時間片用完後(counter減至0)或者主動放棄cpu時。該任務將被放在就緒佇列末尾(時間片用完)或等待佇列(因等待資源而放棄cpu)中。

5,此時排程程式反覆上面計算過程,轉到第4步。

6。當排程程式發現全部就緒任務計算所得的權值都為不大於0時,反覆第2步。

全部任務都採用 fifo 時

1。建立程序時指定採用 fifo,並設定實時優先順序 rt_priority(1-99)。

2,假設沒有等待資源,則將該任務增加到就緒佇列中。

3。排程程式遍歷就緒佇列。依據實時優先順序計算排程權值(1000+rt_priority),選擇權值最高的任務使用 cpu,該 fifo 任務將一直占有 cpu 直到有優先順序更高的任務就緒(即使優先順序同樣也不行)或者主動放棄(等待資源)。

4,排程程式發現有優先順序更高的任務到達(高優先順序任務可能被中斷或定時器任務喚醒。再或被當前執行的任務喚醒,等等)。則排程程式馬上在當前任務 堆疊中儲存當前cpu暫存器的全部資料。又一次從高優先順序任務的堆疊中載入暫存器資料到cpu。此時高優先順序的任務開始執行。

反覆第3步。

5,假設當前任務因等待資源而主動放棄cpu使用權。則該任務將從就緒佇列中刪除。增加等待佇列。此時反覆第3步。

全部任務都採用rr排程策略時

1。建立任務時指定排程引數為 rr,並設定任務的實時優先順序和nice值(nice值將會轉換為該任務的時間片的長度)。

2。假設沒有等待資源。則將該任務增加到就緒佇列中。

3,排程程式遍歷就緒佇列。依據實時優先順序計算排程權值 (1000+rt_priority) ,選擇權值最高的任務使用 cpu。

4,假設就緒佇列中的 rr 任務時間片為0。則會依據 nice 值設定該任務的時間片,同一時候將該任務放入就緒佇列的末尾。反覆步驟3。

5,當前任務因為等待資源而主動退出 cpu,則其增加等待佇列中。

反覆步驟3。

系統中既有分時排程,又有時間片輪轉排程和先進先出排程時

1,rr 排程和 fifo 排程的程序屬於實時程序,以分時排程的程序是非實時程序。

2。當實時程序準備就緒後,假設當前 cpu 正在執行非實時程序,則實時程序馬上搶占非實時程序。

3。rr 程序和 fifo 程序都採用實時優先順序做為排程的權值標準,rr是fifo的乙個延伸。fifo時,假設兩個程序的優先順序一樣,則這兩個優先 級一樣的程序詳細執行哪乙個是由其在佇列中的位置決定的,這樣導致一些不公正性(優先順序是一樣的。為什麼要讓你一直執行?),假設將兩個優先順序一樣的任務 的排程策略都設為rr,則保證了這兩個任務能夠迴圈執行,保證了公平。

作業系統linux核心的三種程序排程方法

1,sched other 分時排程策略 2,sched fifo 實時排程策略,先到先服務 3,sched rr 實時排程策略,時間片輪轉 實時程序將得到優先呼叫,實時程序根據實時優先順序決定排程權值,分時程序則通過nice和counter值決定權值,nice越小,counter越大,被排程的概率...

作業系統 程序的三種狀態

1.就緒狀態 程序獲得了除了cpu之外的所有的必要資源,只要獲得cpu就可以立即執行,此時的程序處於就緒態。2.執行狀態 程序已經獲得cpu,正在執行,在多處理其系統中,會有多個程序同時處於執行狀態。3.阻塞狀態 處於執行狀態的程序由於發生某些事件而暫時無法繼續執行,放棄處理機而處於暫停狀態,此時程...

作業系統 三種頁面置換演算法

一 演算法描述 1.先進先出 fifo 置換演算法 1 描述 fifo演算法是最早出現的置換演算法。該演算法總是淘汰最先進入記憶體的頁面,即選擇在記憶體中駐留時間最久的頁面予以淘汰。2 優點 該演算法實現簡單,只需要把乙個程序已調入記憶體的頁面按先後次序鏈結成乙個佇列,並設定乙個指標,稱為替換指標,...