優先順序排程演算法及其優缺點

2020-07-16 10:04:36
SJF 演算法是通用優先順序排程演算法的一個特例。每個進程都有一個優先順序與其關聯,而具有最高優先順序的進程會分配到 CPU。具有相同優先順序的進程按 FCFS 順序排程。SJF 演算法是一個簡單的優先順序演算法,其優先順序(p)為下次(預測的)CPU 執行的倒數。CPU 執行越長,則優先順序越小;反之亦然。

注意,我們按照高優先順序和低優先順序討論排程。優先順序通常為固定區間的數位,如 0~7 或 0~4095。不過,對於 0 表示最高還是最低的優先順序沒有定論。有的系統用低數位表示低優先順序,其他用低數位表示高優先順序。這種差異可以導致混淆。本節用低數位表示高優先順序。

舉個例子,假設有如下一組進程,它們在時間 0 按順序 P1,P2,…,P5 到達,其 CPU 執行時間以 ms 計:

進程 執行時間 優先順序
P1 10 3
P2 1 1
P3 2 4
P4 1 5
P5 5 2

採用優先順序排程,會按如下 Gantt 圖來排程這些進程: