處理機排程演算法總結
一:處理機排程
1 高階排程(長程/作業/巨集觀排程)
2 中級排程(交換排程)
3 低階排程(短程/CPU/程序/微觀排程)
二:常見的排程類別
----作業排程
----先來先服務(fcfs)
----短作業優先(sjf)
----優先順序排程演算法(psa)
----高響應比優先排程演算法(hrrn)
-----程序排程
----最短剩餘時間排程演算法(srt)
----時間片輪轉排程演算法(rr)
----多級佇列排程演算法
----多級反饋佇列排程演算法(mfq)
----基於公平原則的排程演算法
----保證排程演算法
----公平分享排程演算法
----實時排程
----非搶佔式排程演算法用於非週期實時任務
----搶佔式排程演算法用於週期實時任務
----最低鬆弛度優先演算法(LLF)
三:各種排程演算法詳解
(1)作業排程
1:先來先服務(fcfs)
基本思想:按程序(作業)進入就緒(後備)佇列的先後次序來分配處
理機(為其建立程序)。
一般採用非剝奪的排程方式。
例子
FCFS 排程演算法的平均作業週轉時間與作業提交的順序有關。
FCFS 排程演算法的特點:
簡單,但效率不高。
有利於 CPU 繁忙型作業。
不利於 I/O 繁忙型作業。
現在作業系統中,已很少用該演算法作為主要排程策略,尤其是在分時系統
和實時系統中。但它常被結合在其它排程策略中使用。
2:短作業優先(sjf)
用於作業排程
主要任務是從後備佇列中選擇一個或若干個估計執行時間最短的作業,將
它們調入記憶體執行。
類似地,用於程序排程的是短程序優先調
優點
能有效降低作業的平均等待時間。
能有效縮短程序的平均週轉時間。
提高了吞吐量。
缺點
對長作業不利。
沒有考慮作業的緊迫程度。
作業執行時間、剩餘時間僅為估計。
SJF 演算法雖然是優化的,但在 CPU 排程中很難實現。
3:優先順序排程演算法(psa)
優先順序排程演算法(Priority-Scheduling Algorithm, PSA) 以作業的緊迫程
度為優先順序。
系統選擇優先順序最高的幾個作業裝入記憶體。
優先順序排程演算法也用於程序排程,系統在可執行的程序中選擇優先順序最
高者使其投入執行。
優先順序的型別
靜態優先順序
動態優先順序
靜態優先順序
優先權在建立程序時確定,且在程序的整個執行期間保持不變。一般用
整數表示,小表示優先順序高。
確定原則:
程序型別(系統程序 > 使用者程序)
程序對資源的需求(要求少的有較高的優先權)
使用者要求(緊急程度和付費情況)
優點:簡單,開銷小。
缺點:公平性差(對低優先權程序)
動態優先順序
動態優先順序在程序的存在過程中不斷髮生變化。
動態優先順序的變化取決於:
程序的等待時間
程序的執行時間
程序使用資源的情況
動態優先權確定方法的資源利用率高,公平性好,但開銷較大,實現較
為複雜。
高響應比優先演算法 (HRRN)採用動態優先權。
4:高響應比優先排程演算法(hrrn)
FCFS 只考慮了作業的等待時間,忽略了執行時間。SJF 只考慮了作業
的執行時間,忽略了等待時間。
高響應比優先排程演算法(Highest Response Ratio Next, HRRN) 既考慮了
作業的等待時間,也考慮了作業的執行時間,是一種動態優先順序排程算
法。
優先權 =
(等待時間 + 要求服務時間)/
要求服務時間
響應比RP =
(等待時間 + 要求服務時間)/要求服務時間 =響應時間/要求服務時間
週轉時間:從提交到完成的時間間隔。響應時間:在互動式系統中,從提交請求到產生首次響應的時間,而不是
到產生輸出結果所需的時間
根據優先權公式可知
如等待時間相同,則要求服務時間越短其優先權越高 →SJF。
如要求服務時間相同,優先權決定於等待時間 →FCFS。
對長作業,若等待時間足夠長,優先權也高,也能獲得 CPU
(2)程序排程
1:最短剩餘時間排程演算法(srt)
最短剩餘時間排程演算法(Shortest Remaining Time First, SRT) 是針對
SPF 增加了搶佔機制的一種排程演算法。
它總是選擇預期剩餘時間最短的程序。只要新程序就緒,且有更短的剩
餘時間,排程程式就可能搶佔當前正在執行的程序。
SRT 不像 FCFS 偏向長程序,也不像輪轉法(下個演算法)產生額外的中
斷,從而減少了開銷。
就此例而言,平均週轉時間和帶權平均週轉時間說明了SRT 好於前面的
任何一個演算法(因為它具有搶佔的特點)。
SPF 非搶佔 SRT
平均週轉時間 7.6 7.2
平均帶權週轉時間 1.84 1.59
缺點:必須記錄過去的服務時間,從而增加了開銷
2:時間片輪轉排程演算法(rr)
時間片輪轉排程演算法:系統將所有就緒程序按FCFS的原則,排成一個隊
列依次排程,把 CPU 分配給隊首程序,並令其執行一個時間片,通常為
10-100ms。時間片用完後,系統的計時器發出時鐘中斷,該程序將被剝
奪 CPU並插入就緒佇列末尾。
RR 是一種非常公平的演算法。
程序切換時機
若一個時間片尚未用完程序便已經完成,就立即再排程就緒佇列中隊首進
程執行,並啟動一個新的時間片。
如果在一個時間片用完時程序尚未執行完畢,則剝奪 CPU,排程程式把它
送往就緒佇列的末尾。
響應時間T = 時間片q × 就緒佇列程序數n
3:多級佇列排程演算法
優先順序排程演算法的型別
非搶佔式優先順序排程演算法:一旦把處理機分配給就緒佇列中優先順序最高的
程序後,該程序便一直執行下去直至完成,或者因該程序發生某事件而放
棄處理機時,系統方可將處理機重新分配給另一優先順序最高的程序。
搶佔式優先順序排程演算法:只要出現了另一個其優先順序更高的程序,排程程
序就將處理機分配給新到的優先順序最高的程序
4:多級反饋佇列排程演算法(mfq)
多級反饋佇列排程演算法
是時間片輪轉演算法和優先順序排程演算法的綜合和發展,通過動態調整程序
優先順序和時間片大小,不必事先估計程序的執行時間。
FCFS + 優先順序 + RR + 搶佔
多級反饋佇列可兼顧多方面的系統目標,是目前公認的一種較好的程序
排程演算法
5:基於公平原則的排程演算法
------:保證排程演算法
保證處理機分配的公平性。如果 n 個程序同時執行,公平的情況下每進
程應該獲得處理機時間的 1/n
------:公平分享排程演算法
針對使用者而不是程序,使得每使用者獲得相同的處理機時間
(3)實時排程
1:非搶佔式排程演算法用於非週期實時任務
2:搶佔式排程演算法用於週期實時任務
3:最低鬆弛度優先演算法(LLF)
最低鬆弛度優先演算法(LLF,Least Laxity First)
低鬆弛 = 高緊急
演算法是根據任務緊急(或鬆弛)的程度,來確定任務的優先順序。任務的
緊急度越高,其優先順序越高,並使之優先執行。
演算法採用搶佔排程方式,可用於排程具有完成截止時間的週期性實時任
務。
鬆弛度 = 必須完成時間 - 本身剩餘執行時間 - 當前時間