1. P117頁,練習15:最高響應比( HRRF)
2. P119頁,練習22(2):時間片輪轉( RR )
3. 現設定采用三級反饋隊列調度算法,三個隊列分別為0、1和2,對應時間片為2、4、8。現有四個進程A、B、C、D,到達時刻分別為0、5、7、12,執行時間分別為7、4、13、2。請寫出整個進程調度過程,包括每個時間段,執行的進程,執行后進程狀態,各個隊列內進程的變化。
4. 從以下幾個方面比較各個調度算法的優缺點:
(1).資源利用率 (2).吞吐率 (3).周轉率 (4).響應時間 (5).公平性 (6).適用范圍
一、先來先服務(FCFS)
按照作業/進程進入系統的先后次序進行調度,先進入系統者先調度;即啟動等待時間最長的作業/進程。是一種最簡單的調度算法,即可用於作業調度,也可用於進程調度
1.比較有有利於長作業進程,不利於段作業進程
2.適合批處理系統,不適合分時系統
3.不利於I/0繁忙型作業而有利於CPU繁忙型作業
二、最短作業優先算法(SJF)
從隊列中選出一個估計運行時間最短的作業優先調度,即可用於作業調度,也可用於進程調度
1.能夠克服FCFS算法偏愛長作業的缺點,但執行效率也不高
2.忽視了作業等待時間,進入系統時間長但計算時間長的長作業等待時間會很長,出現就餓現象
3.缺少剝奪機制,對分時、實時處理不理想
4.實現該算法要先知道作業運行時間,否則調度就沒有依據
三、最短剩余時間優先算法(剝奪式SJF算法)
若在進程運行過程中若有所需CPu時間比正在進行的進程時間更短的進程,則先執行最短CPU用時的進程
1.相比非剝奪式SJF算法,剝奪式算法所需的平均等待時間和平均周轉時間都更短
四、最高響應比優先算法(HRRF)
HRRF式算法是一種介於FCFS算法和SJF算法之間的一種非剝奪式算法,既考慮作業等待時間有考慮作業處理時間。
響應比 = 作業周轉時間 /作業處理時間
= (作業等待時間 + 作業處理時間 ) / 作業處理時間
= 1+ 作業等待時間 / 作業處理時間
1.既照顧短作業又不會使長作業的等待時間過長,能有效改善調度性能
2.每次計算各道作業的響應會導致一定時間開銷,性能比SJF算法略差
五、優先級調度算法
根據確定的優先級來選取進程/進程,總是選擇就緒隊列中優先級最高者投入運行。通過用戶定義的非剝奪式或剝奪式算法分為 靜態和動態 優先級算法
1.靜態優先級算法簡單,但是會出現飢餓現象,是某些低優先級/線程無限期地被推遲執行
2.動態優先級會使個進程的優先級隨時間而改變,原則上是:正在運行的進程隨着CPU占有時間增加,逐漸降低其優先級;就緒隊列中等待的CPU進程隨等待時間的增加而逐漸提高其優先級,克服了靜態優先級的飢餓問題
六、輪轉調度算法(BR)
也稱時間片調度。調度程序每次把CPU分配個就緒隊列首進程使用規定的時間間隔,稱為時間片,就緒隊列中的每個進程/線程輪流地運行一個時間片,當時間片耗盡時就強迫當前運行進程讓出處理器,轉而排列到就緒隊列尾部,等待下一輪調度。、
1.BR調度是一種剝奪式調度,系統在進程切換上的開銷比較大,開銷與時間片大小有關。
2.若時間片取值太小,將導致大多數進程都不可能在一個時間片內運行完畢,就會頻繁的切換。開銷顯著增大,所以從系統效率看,時間片取大一點好。
3.若時間片長度較大,那么隨着就緒隊列中進程數目增加,輪轉一次所耗費總時長變長,即對每個進程的響應速度放慢,甚至時間片大到讓進程足以完成其所有任務,RR調度算法便退化成FCFS算法。
4.為滿足用戶對響應時間的要求,要么限制就緒隊列中進程數量,要么采用變化的時間片長度,根據當前負載狀況及時調整時間片大小。所以,確定時間片長度要從數目、切換開銷、系統效率和響應時間等多方面因素加以考慮。
七、多級反饋隊列調度算法(MFQL)
又稱反饋循環隊列,主要思想是:由系統建立多個就緒隊列,每個隊列對應於一個優先級,第一個隊列的優先級最高,第二個隊列的優先級次之,其后隊列的優先級依次降低。較高優先級隊列分配較短時間片,較低優先級隊列分配較長時間片。
1.可能會導致“飢餓”問題,假如有一個長作業進入系統,它最終必將移入優先級最低的就緒隊列當中,若其后又源源不斷的短作業進入系統,且形成穩定的作業流,則長作業一直等待,陷入“飢餓狀態”。解決方法是對於低優先級中等待時間較長的,進程提升其優先級,從而讓它獲得運行機會。
2.MLFQ算法具有良好性能,能滿足各類應用需要。對於分時交互型短作業,系統通常刻在第一隊列規定的時間片內完成工作。