該演算法是SJF排程的搶先版本。 在SRTF中,過程的執行可以在一段時間後停止。 在每個進程到來時,短期排程程式在可用進程列表和正在執行的進程中以最少的剩餘突發時間安排進程。
一旦所有進程都在就緒佇列中可用,就不會執行搶占,並且該演算法將作為SJF排程工作。 當進程從執行中被移除並且下一個進程被排程時,進程的上下文被儲存在過程控制塊中。 該PCB在下一次執行該過程時被存取。
範例
在這個例子中,有五個作業:P1
,P2
,P3
,P4
,P5
和P6
。 它們的到達時間和爆發時間如下表所示。
進程ID | 到達時間 | 突發時間 | 完成時間 | 周轉時間 | 等待時間 | 響應時間 |
---|---|---|---|---|---|---|
1 | 0 | 8 | 20 | 20 | 12 | 0 |
2 | 1 | 4 | 10 | 9 | 5 | 1 |
3 | 2 | 2 | 4 | 2 | 0 | 2 |
4 | 3 | 1 | 5 | 2 | 1 | 4 |
5 | 4 | 3 | 13 | 9 | 6 | 10 |
6 | 5 | 2 | 7 | 2 | 0 | 5 |
平均等待時間= 24/6
甘特圖根據表中給出的到達和爆發時間進行準備。
因為在0時刻,唯一可用的進程是CPU的CPU突發時間為8的P1。這是列表中唯一可用的進程,因此它是按計劃進行的。
下一個過程在時間單元1到達。由於使用的演算法是搶占式的SRTF,所以當前的執行被停止,並且排程器以最小的突發時間檢查過程。到目前為止,就緒佇列中有兩個進程可用。 到目前為止,作業系統已經執行了一個單元的P1; P1的剩餘突發時間是7個單位。 過程P2的突發時間是4個單位。 因此,根據演算法在CPU上排程進程P2。
下一個處理P3在時間單元2到達。此時,處理P3的執行停止,並搜尋具有最小剩餘突發時間的處理。 由於過程P3具有2個單位的突發時間,所以它將被給予優先於其他的優先權。
下一個進程P4以時間單元3到達。在這個到達時,排程程式將停止P4的執行並檢查哪個進程在可用進程(P1,P2,P3和P4)中具有最少的突發時間。 P1和P2的剩餘突發時間分別為7個單位和3個單位。
P3和P4的剩餘突發時間各有1個單位。 因為兩者都是相同的,所以排程將根據他們的到達時間完成。 P3比P4早到,因此它會再次安排。
下一個進程P5以時間單元4到達。直到此時,進程P3已經完成執行,並且不在列表中。 排程程式將比較所有可用進程的賸餘突發時間。 由於過程P4的突發時間是1,所以這是最少的,因此這將被安排。
下一個過程P6以時間單元5到達,直到此時,過程P4已經完成其執行。 我們有4個可用的過程,即P1(7),P2(3),P5(3)和P6(2)。 P6的爆發時間是最少的,因此P6被安排。 因為現在所有的過程都是可用的,所以現在演算法與SJF一樣工作。 P6將被執行直到完成,然後剩餘時間最短的過程將被安排。
當所有進程到達,不搶占,演算法將作為SJF。