到目前為止,我們根據它們的到達時間(在FCFS排程中)排程這些進程。 但是,SJF排程演算法根據其突發時間安排進程。
在SJF排程中,就緒佇列中可用進程列表中的突發時間最短的進程將在下一個進行排程。
然而,預測一個過程所需的突發時間是非常困難的,因此這個演算法在系統中很難實現。
SJF的優勢
SJF的缺點
有一些其它的技術可用來確定進程的CPU突發時間。 我們稍後會詳細討論它們。
範例
在以下範例中,有五個作業命名為:P1
,P2
,P3
,P4
和P5
。 他們的到達時間和爆發時間在下表中給出。
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
到達; 從時間0
到1
(第一個過程到達的時間)甘特圖中會有一個空槽。
根據該演算法,OS排程就緒佇列中可用進程中具有最低突發時間的進程。
到目前為止,我們在就緒佇列中只有一個進程,因此排程器會將它安排到處理器,而不管它的突發時間是多少。
這將被執行到8個單位的時間。 直到那時又有三個進程到達就緒佇列,因此排程器將選擇具有最低突發時間的進程。
在表中給出的過程中,接下來將執行P3
,因為它在所有可用進程中具有最低的突發時間。
所以這就是程式如何以最短作業優先(SJF)排程演算法進行。