作業系統最短作業優先(SJF)排程


到目前為止,我們根據它們的到達時間(在FCFS排程中)排程這些進程。 但是,SJF排程演算法根據其突發時間安排進程。

在SJF排程中,就緒佇列中可用進程列表中的突發時間最短的進程將在下一個進行排程。

然而,預測一個過程所需的突發時間是非常困難的,因此這個演算法在系統中很難實現。

SJF的優勢

  • 最大吞吐量
  • 最低的平均等候時間和週轉時間

SJF的缺點

  • 可能會面臨飢餓問題
  • 這是不可實現的,因為一個進程的確切爆發時間不能預先知道。

有一些其它的技術可用來確定進程的CPU突發時間。 我們稍後會詳細討論它們。

範例

在以下範例中,有五個作業命名為:P1P2P3P4P5。 他們的到達時間和爆發時間在下表中給出。

PID 到達時間 突發時間 完成時間 周轉時間 等待時間
1 1 7 8 7 0
2 3 3 13 10 7
3 6 2 10 4 2
4 7 10 31 24 14
5 9 8 21 12 4

因為,沒有過程在時間0到達; 從時間01(第一個過程到達的時間)甘特圖中會有一個空槽。

根據該演算法,OS排程就緒佇列中可用進程中具有最低突發時間的進程。

到目前為止,我們在就緒佇列中只有一個進程,因此排程器會將它安排到處理器,而不管它的突發時間是多少。

這將被執行到8個單位的時間。 直到那時又有三個進程到達就緒佇列,因此排程器將選擇具有最低突發時間的進程。

在表中給出的過程中,接下來將執行P3,因為它在所有可用進程中具有最低的突發時間。

所以這就是程式如何以最短作業優先(SJF)排程演算法進行。