CPU 排程

時間配量(time quantum)

想像派對上一台共用的電玩主機配著一個廚房計時器:每位玩家握著手把直到計時器響,然後必須交出去。時間配量(或稱時間片)就是 CPU 的那個計時器設定——一個行程在輪轉先佔它、換到下一個就緒行程之前,被允許執行的最長時間。

細看它的運作:當分派器把 CPU 交給一個行程時,它也把一個硬體計時器設定為 q 毫秒。若行程在 q 流逝前自願阻塞或完成,那沒問題——下一個行程提早開始。但若 q 到期時行程仍在執行,計時器會發出一個中斷,核心先佔該行程、把它放到就緒佇列尾端、分派下一個。所以配量就是把 CPU 切成分時時間片的那個旋鈕。

為什麼它是輪轉的核心:配量設下一個直接的取捨。把它設得很大,一個行程幾乎總能在一個時間片內做完它的爆發,於是輪轉的行為就和先到先服務一樣,護航效應又回來了。把它設得很小,你就不斷切換;由於每次切換都要付分派延遲,極小的配量會把很大一部分 CPU 浪費在開銷而非有用工作上——這是一種在環境切換上的空轉。常見的經驗法則是把 q 挑成讓絕大多數 CPU 爆發都能在單一配量內做完,同時 q 又仍舒適地大於一次環境切換的成本。

配量 100 毫秒:多數短爆發在一個時間片內做完、切換少見——但一個長工作會一口氣霸佔 100 毫秒,逼近 FCFS。配量 1 毫秒、切換成本 0.1 毫秒:你每毫秒就切換一次,所以約一成的 CPU 是純開銷,而十個工作會因不斷翻攪而感覺遲鈍。

配量太大表現得像 FCFS;太小則把 CPU 浪費在切換上——配量是最核心的調校旋鈕。

沒有放諸四海皆準的最佳配量;它要依系統與工作負載調校。經典準則:挑一個讓大約八成的 CPU 爆發短於一個配量、同時又遠大於環境切換成本的值。

又称
time slicequantum時間量時間片