CPU 排程
輪轉排程(round-robin)
/ RR /
想像一群人圍成圈傳一支「發言棒」:每個人講固定的短時間,然後必須傳下去,於是每個人都不斷有規律地輪到,沒有人能獨佔對話。輪轉排程對 CPU 做的就是這件事——它為分時系統而設計,依序給每個就緒行程一小段固定的 CPU 時間,一遍又一遍地循環走過所有行程。
它的運作方式:就緒佇列被當作一個環狀的先進先出佇列。排程器把 CPU 給最前面的行程,最多一個時間配量(一段固定間隔,比如 10 到 100 毫秒)。若行程在配量結束前完成或阻塞,下一個行程立刻執行。若配量先到期,計時器中斷會先佔該行程,它被放到佇列尾端,下一個行程執行。所以在有 n 個就緒行程、配量為 q 時,任一行程在它下次輪到前等不超過 (n - 1) 乘以 q——這個上限正是讓反應靈敏的原因。
為什麼重要與它的取捨:輪轉是互動式分時系統的主力,因為它公平地分享 CPU、給每個行程快速且可預測的反應時間。它的行為完全取決於配量大小。若 q 太大,輪轉就退化成先到先服務,護航效應又回來了。若 q 太小,CPU 會把很大一部分時間花在環境切換而非工作上——開銷空轉。訣竅是挑一個相對於分派成本夠大、但又小到感覺靈敏的配量。
三個工作 P1、P2、P3 各需 6 毫秒,配量 2 毫秒。CPU 循環跑 P1、P2、P3、P1、P2、P3、P1、P2、P3。每個每 6 毫秒就輪到一次,所以三者都穩定推進、反應迅速——沒有誰要等一個長工作做完,這點與 FCFS 不同。
輪轉在所有就緒工作間循環分配固定時間片——公平輪流、反應迅速,代價是更多切換。
輪轉的平均完成時間通常比 SJF 差;它的勝場是「反應」時間與公平,而非純效率。恰當的配量是相對於切換開銷大、相對於典型 CPU 爆發小。
又称
另见