CPU 排程
最短剩餘時間優先排程(shortest-remaining-time-first)
/ SRTF /
最短剩餘時間優先是放開拳腳的最短工作優先:它是先佔版本。概念相同——偏好剩下工作最少的那個——但現在作業系統被允許在一個新抵達者剩餘時間更短的那一刻,打斷正在執行的工作,把 CPU 奪給較短的新來者。
它的運作情形:在每一刻,尤其是每當有新行程抵達時,排程器都會比較正在執行行程的剩餘 CPU 爆發時間與新行程的。若新行程完成所需的時間比目前行程剩下的還少,目前行程就被先佔,新行程開始執行。由於先佔可在任何抵達時發生,一個原本在跑的長工作可能在一連串短工作湧入時被反覆暫停。SRTF 給出所有排程器中可能最低的平均等待時間——甚至比非先佔的 SJF 還低——因為先佔讓一個較晚抵達的短工作得以插隊到前面。
與 SJF 同樣的兩個問題,但更尖銳。它仍需預測每段爆發長度(透過指數平均),因為剩餘時間就是未來的爆發時間。而飢餓更嚴重:一個長工作可能被一再先佔,若短工作不斷抵達,它可能永遠做不完。額外開銷也更多,因為每次先佔都是一次環境切換。和 SJF 一樣,它比較是理論上的理想與教學工具,而非字面上的生產級排程器。
P1(爆發 8)在時刻 0 開始。在時刻 1,新工作 P2(爆發 4)抵達。由於 4 小於 P1 剩餘的 7,SRTF 先佔 P1、改跑 P2。P1 要等較短的工作做完才接續——這比讓 P1 先做完給出更低的平均等待時間。
SRTF 在更短的工作一抵達的那一刻就先佔,達成理論上最低的平均等待時間。
SRTF 的最佳性假設你知道剩餘時間、且忽略切換開銷;現實中預測只是近似,而無情的先佔可能比非先佔的 SJF 更嚴重地餓死長工作。
又称
另见