CPU排程演算法總結
阿新 • • 發佈:2018-12-26
批處理系統中採用的排程演算法
重要指標(吞吐量,週轉時間,CPU利用率,公平平衡)
- 非搶佔式的先來先服務演算法(FCFS):按照程序就緒的先後順序使用CPU
- 特點:公平,實現簡單,但是長程序後面的短程序需要等待很長時間,不利於使用者體驗。
非搶佔式的最短作業優先(SJF):具有最短完成時間的程序優先執行
最短剩餘時間優先(SRTN):SJF搶佔式版本,即當一個新就緒的程序比當前執行程序具有更短完成時間時,系統搶佔當前程序,選擇新就緒的程序執行。
- 短作業優先排程演算法特點:改善短作業的週轉時間,但如果源源不斷有短任務到來,可能使長的任務長時間得不到執行,產生飢餓現象。
最高相應比優先演算法(HRRN):是一個綜合演算法,排程時,首先計算每個程序的響應比R,之後總是選擇R最高的程序執行。
- 響應比R=(等待時間+處理時間)/處理時間
互動系統中採用的排程演算法:
重要指標(響應時間,公平平衡)
時間片輪轉排程演算法: 每個程序被分配一個時間片,允許該程序在該時間段執行,如果在時間片結束時該程序還在執行,則剝奪CPU並分配給另一個程序,如果該程序在時間片結束前阻塞或結束,則CPU立即進行切換。
- 當時間片選擇太長,其降級為先來先服務演算法,引起對短的互動請求響應時間長
- 當時間片選擇太短,會導致頻繁的程序切換,浪費CPU時間。
- 通常選擇為20ms~50ms.
- 對程序表中不同程序的大小差異較大的有利,而對程序都是相同大小的不利。
虛擬輪轉法:主要基於時間片輪轉法進行改進,解決在CPU排程中對於I/O密集型程序的不友好。其設定了一個輔助佇列,對於I/O型程序執行完一個時間片之後,則進入輔助佇列,CPU排程時總是先檢查輔助佇列是否為空,如果不為空總是優先排程輔助佇列裡的程序,直到為空,才排程就緒佇列的程序。
最高優先順序排程演算法:選擇優先順序最高的程序優先執行。
- 優先順序可以靜態不變,也可以動態調整
- 優先數決定優先順序
- 就緒佇列可以按照優先順序組織
- 實現簡單,但不公平,可能導致優先順序低的程序產生飢餓現象。
- 可能產生優先順序反轉問題(基於優先順序的搶佔式演算法),即一個低優先順序程序持有一個高優先順序程序所需要的資源,使得高優先順序程序等待低優先順序程序執行。
多級反饋佇列排程演算法:
- 設定多個就緒佇列,併為各個佇列賦予不同的優先順序。第一個佇列的優先順序最高,依次遞減優先順序。
- 對於各個佇列程序執行時間片的大小也不同,優先順序越高的佇列,分配到的時間片越少。
- 當第一級佇列為空時,再第二級佇列進行排程,依次類推,各級佇列按照時間片輪轉方式進行排程。
- 當一個新程序建立後,首先把它放入第一佇列的末尾。按照FCFS原則排隊等待排程。當輪到該程序執行時,如它在該時間片完成,便可準備撤離系統,如果它在一個時間片結束時尚未完成,則排程程式便將該程序轉入第二佇列的末尾,再同樣地按照FCFS原則等待排程執行。依次類推。