一:處理機調度
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)
低松弛 = 高緊急
算法是根據任務緊急(或松弛)的程度,來確定任務的優先級。任務的
緊急度越高,其優先級越高,並使之優先執行。
算法采用搶占調度方式,可用於調度具有完成截止時間的周期性實時任
務。
松弛度 = 必須完成時間 - 本身剩余運行時間 - 當前時間