先到先服務調度,FCFS調度演算法(非搶佔式)
當一個進程進入到就緒隊列,其PCB被連結到隊列的尾部。當CPU空閑時,CPU被分配給位於隊列頭的進程。接著,該運行進程從隊列中被刪除。FCFS調度的代碼編寫簡單且容易理解。
最短作業優先調度演算法,SJF調度演算法(搶佔式或非搶佔式)
當CPU為可用時,它會賦給具有最短後續CPU區間的進程。如果兩個進程具有同樣長度的CPU區間,那麼可以使用FCFS調度來處理。
SJF演算法可能是搶佔的或非搶佔的。當一個新進程到達就緒隊列而以前進程正在執行時,就需要選擇。新進程,與當前運行進程所產生的CPU區間相比,可能有一個更短的下一個CPU區間。可搶佔SJF演算法可能會搶佔當前運行進程,而非搶佔SJF演算法會允許當前運行進程完成其CPU區間。可搶佔SJF調度有時稱為最短剩餘時間優先調度。
優先權調度演算法
每個進程都由一個優先權與其關聯,具有最高優先權的進程會被分配到CPU。具有相同優先權的進程按FCFS順序調度。
輪轉法(round-robin,RR)調度演算法
輪轉法調度演算法是專門為分時系統而設計的。它類似於FCFS調度,但是增加了搶佔以在進程間切換。定義一個較小時間單元,稱為時間量或時間片。時間片通常為10ms到100ms。就緒隊列作為迴圈隊列處理。CPU發送器迴圈就緒隊列,為每個進程分配不超過一個時間片間隔的CPU。
為了實現RR調度,將就緒隊列實現為進程的FIFO隊列。新進程增加到就緒隊列的尾部。CPU發送器從就緒隊列中選擇第一個進程,設定定時器在一個時間片之後中斷,最後指派該進程。接著,有兩種情況可能發生。進程可能只需要小於一個時間片的CPU區間。對於這種情況,進程本身會自動釋放CPU。發送器接著會處理就緒隊列的下一個進程。另一種情況是,當前運行進程的CPU區間比一個時間片要長,定時器會中斷併產生作業系統中斷。進行環境切換,該進程會被加入到就緒隊列的尾部。接著,CPU發送器會選擇就緒隊列中的下一個進程。
多級隊列調度