CPU 排程

完成時間/周轉時間(turnaround time)

你早上九點把鞋子送修,下午兩點取回修好的鞋——周轉是五小時,不論鞋匠實際花了幾分鐘上膠。一個工作的完成時間是同樣的概念:從工作進入系統到它完全結束之間,所經過的總實際時間(牆上時鐘時間),把中間的一切都算進去。

確切地說,完成時間 = 完成的時刻減去抵達的時刻。它把工作一生的每個階段都包進來:在就緒佇列中等待的時間、在 CPU 上真正執行的時間、以及做 I/O 的時間。所以若一個行程在時刻 0 抵達、在時刻 33 結束,它的完成時間就是 33,即使它只需要 10 毫秒的 CPU——其餘 23 毫秒是等待與 I/O。排程器常以一組工作的平均完成時間來比較。

為什麼重要:完成時間是捕捉「得到結果的總時間」的指標,這正是一個送出批次工作的使用者真正在意的。它與等待時間緊密相連(完成時間 = 等待時間 + 服務時間 + I/O 時間),所以減少等待就能減少完成時間。在非先佔式政策中,最短工作優先在最小化平均完成時間上是最佳的——但前提是你事先知道各爆發長度,而實務上你只能估計。

行程 P 在時刻 5 抵達、在時刻 40 完成。它的完成時間是 40 - 5 = 35。若 P 只需要 12 毫秒的 CPU,那它就花了 35 - 12 = 23 毫秒在等待與做 I/O——這個差距正是排程能縮小的部分。

完成時間衡量的是抵達到結束的全程,包含所有等待——而不只是用掉的 CPU 時間。

完成時間不等於工作所需的 CPU 時間(服務時間)。一個只需 1 毫秒 CPU 的工作,若卡在別人後面乾等,仍可能有很大的完成時間——這個差距正是排程所掌控的。