最短作業優先(SJF)排程演算法(詳解版)

2020-07-16 10:04:35
最短作業優先(SJF)排程演算法將每個進程與其下次 CPU 執行的長度關聯起來。當 CPU 變為空閒時,它會被賦給具有最短 CPU 執行的進程。如果兩個進程具有同樣長度的 CPU 執行,那麼可以由 FCFS 來處理。

一個更為恰當的表示是最短下次CPU執行演算法,這是因為排程取決於進程的下次 CPU 執行的長度,而不是其總的長度。我們使用 SJF 一詞,主要由於大多數教科書和有關人員都這麼稱呼這種型別的排程策略。

舉一個 SJF 排程的例子,假設有如下一組進程,CPU 執行長度以 ms 計:

進程 執行時間
P1 6
P2 8
P3 7
P4 3

採用 SJF 排程,就會根據如下 Gantt 圖來排程這些進程: