目錄
1. 比較調度算法的準則
- CPU 使用率:CPU 處於忙狀態的時間百分比
- 吞吐量:單位時間內完成的進程數量
- 週轉時間:進程從初始化到結束(包括等待)的總時間
- 等待時間:進程在就緒隊列中的總時間
- 響應時間:從提交請求到產生響應所花費的總時間
2. 調度算法
2.1 先來先服務算法(FCFS)
思路:按照請求的順序進行調度。
優點:簡單。
缺點:平均等待時間波動較大:短進程可能排在長進程後面;I/O 資源和 CPU 資源的利用率較低 。
2.2 短進程優先算法(SPN)
思路:按估計運行時間最短的順序進行調度。
優點:具有最優平均週轉時間。
缺點:可能導致飢餓、需要預知未來。
2.3 最高響應比優先算法
思路:選擇就緒隊列中響應比 R 值最高的進程,R=(w+s)/s,w:等待時間,s:執行時間
優點:關注進程的等待時間,防止無限期推遲。
2.4 最短剩餘時間優先算法(SRT)
思路:按估計剩餘時間最短的順序進行調度。SPN 算法的可搶佔改進。
2.5 時間片輪轉算法
思路:時間片結束時,按 FCFS 算法切換到下一個就緒進程。
時間片太大:等待時間過長,極限情況退化成 FCFS。
時間片太小:反應迅速,但產生大量上下文切換,影響系統吞吐量。
2.6 優先級調度算法
思路:爲每個進程分配一個優先級,按優先級進行調度,爲了防止低優先級的進程永遠等不到調度,可以隨着時間的推移增加等待進程的優先級。
2.7 多級隊列算法
思路:就緒隊列被劃分成多個獨立的子隊列,每個隊列擁有自己的調度策略。隊列間的調度:固定優先級、時間片輪轉。
2.8 多級反饋隊列算法
思路:進程可在不同隊列間移動的多級隊列算法,時間片大小隨優先級級別增加而增加,如進程在當前的時間片內沒有完成,則降到下一個優先級。
2.9 公平共享調度算法
思路:按用戶對進程分組,每個用戶分配一定的 CPU 份額,保證某個進程很多的用戶無法壟斷資源。