CPU排程演算法總結

批處理系統中採用的排程演算法

重要指標(吞吐量,週轉時間,CPU利用率,公平平衡)

非搶佔式的先來先服務演算法(FCFS):按照程序就緒的先後順序使用CPU

特點:公平,實現簡單,但是長程序後面的短程序需要等待很長時間,不利於使用者體驗。

非搶佔式的最短作業優先(SJF):具有最短完成時間的程序優先執行

最短剩餘時間優先(SRTN):SJF搶佔式版本,即當一個新就緒的程序比當前執行程序具有更短完成時間時,系統搶佔當前程序,選擇新就緒的程序執行。 短作業優先排程演算法特點:改善短作業的週轉時間,但如果源源不斷有短任務到來,可能使長的任務長時間得不到執行,產生飢餓現象。

最高相應比優先演算法(HRRN):是一個綜合演算法,排程時,首先計算每個程序的響應比R,之後總是選擇R最高的程序執行。 響應比R=(等待時間+處理時間)/處理時間

互動系統中採用的排程演算法

重要指標(響應時間,公平平衡)

時間片輪轉排程演算法: 每個程序被分配一個時間片,允許該程序在該時間段執行,如果在時間片結束時該程序還在執行,則剝奪CPU並分配給另一個程序,如果該程序在時間片結束前阻塞或結束,則CPU立即進行切換。 當時間片選擇太長,其降級為先來先服務演算法,引起對短的互動請求響應時間長當時間片選擇太短,會導致頻繁的程序切換,浪費CPU時間。通常選擇為20ms~50ms。對程序表中不同程序的大小差異較大的有利,而對程序都是相同大小的不利。

虛擬輪轉法:主要基於時間片輪轉法進行改進,解決在CPU排程中對於I/O密集型程序的不友好。其設定了一個輔助佇列,對於I/O型程序執行完一個時間片之後,則進入輔助佇列,CPU排程時總是先檢查輔助佇列是否為空,如果不為空總是優先排程輔助佇列裡的程序,直到為空,才排程就緒佇列的程序。

CPU排程演算法總結

最高優先順序排程演算法:選擇優先順序最高的程序優先執行。 優先順序可以靜態不變,也可以動態調整優先數決定優先順序就緒佇列可以按照優先順序組織實現簡單,但不公平,可能導致優先順序低的程序產生飢餓現象。可能產生優先順序反轉問題(基於優先順序的搶佔式演算法),即一個低優先順序程序持有一個高優先順序程序所需要的資源,使得高優先順序程序等待低優先順序程序執行。

多級反饋佇列排程演算法: 設定多個就緒佇列,併為各個佇列賦予不同的優先順序。第一個佇列的優先順序最高,依次遞減優先順序。對於各個佇列程序執行時間片的大小也不同,優先順序越高的佇列,分配到的時間片越少。當第一級佇列為空時,再第二級佇列進行排程,依次類推,各級佇列按照時間片輪轉方式進行排程。當一個新程序建立後,首先把它放入第一佇列的末尾。按照FCFS原則排隊等待排程。當輪到該程序執行時,如它在該時間片完成,便可準備撤離系統,如果它在一個時間片結束時尚未完成,則排程程式便將該程序轉入第二佇列的末尾,再同樣地按照FCFS原則等待排程執行。依次類推。

CPU排程演算法總結

各種排程演算法比較

CPU排程演算法總結