Skip to content

方法Method

轮转时间片与切换成本

Round-robin scheduling · RR scheduling · Time quantum · Time slicing

按FIFO轮流交付有界时间片,复算到达与重排的同刻边界,并在有明确切换成本时核对响应上界和有效利用率。

我们通常不知道程序还要运行多久,却可以限制它这一次占用CPU多久。轮转给每个就绪任务最多一个时间片,然后让它排到队尾。它用可执行的时间限制换取较早的首次服务,不需要像最短剩余时间那样预知总工作量。

形式陈述 ​

一片结束以后,谁回到队列 ​

固定单核、可抢占、时间片上限 q>0。从FIFO就绪队列取队首运行,直到以下事件之一最早发生:工作完成、阻塞、或实际运行满 q。

完成者离开;阻塞者等外部事件,不立即重排;只有仍可运行且片用尽者回到队尾。新到达与唤醒者也入队尾。到达本身不抢占当前片,因此一个片并不是每有新任务就重新开始计时。

同刻事件采用SCHED-16边界规则:结算并移除完成者,先放入同刻到达者,再把片用尽但未完成的当前任务放到队尾。若完成与片用尽恰在同刻发生,完成优先,不能把DONE任务再排一次。

时间片只度量交付给任务的服务,不包括切换开销。本页先把开销设为0,稍后逐笔加入。

直觉

用两毫秒时间片跑完四项工作 ​

令 q=2。A先运行0–2,B已在1入队;2时刻C入队后A再排队,故此时队列是B、C、A。

运行区间 任务 该段结束后的剩余量 完成/重排后的READY队列
0–2 A 7 B、C、A
2–4 B 2 C、A、D、B
4–6 C 0 A、D、B
6–8 A 5 D、B、A
8–9 D 0 B、A
9–11 B 0 A
11–13 A 3 A
13–15 A 1 A
15–16 A 0 空

D只需1,8–9完成后立即交接,不必等到10才让B运行。最后只剩A,13与15仍可作片边界检查,但无需把CPU交给别人;在时间图上可把11–16画成一条连续A,账本里仍能保留片边界。

按A、B、C、D排列,完成为 (16,11,6,9),首次运行为 (0,2,4,8)。周转为 (16,10,4,5),平均8.75;首次响应为 (0,1,2,4),平均1.75;总等待为 (7,6,2,4),平均4.75。三组指标不同,应分别列出。

这次RR的平均周转优于FIFO,但不能由一个例子得出普遍优势。三个同时到达、等长工作在RR中会交错到后面才陆续完成,而FIFO会较早完整清掉第一项,见指标页的三任务对照。

例子与边界

相邻片不一定对应一次真正切换 ​

现在规定:从一项任务切到另一项需要 c=0.25 毫秒;首次启动免费;继续同一任务免费;最后完成不收退出费;这期间任务仍会按真实时刻到达。沿用相同到达表和 q=2,重新跑得到:

  • A:0–2,交接2–2.25,B:2.25–4.25
  • 交接4.25–4.5,C:4.5–6.5
  • 交接6.5–6.75,A:6.75–8.75
  • 交接8.75–9,D:9–10
  • 交接10–10.25,B:10.25–12.25
  • 交接12.25–12.5,A:12.5–17.5

真实换任务6次,费用1.5;因此总历时 16+1.5=17.5。有用利用率为 16/17.5=32/35≈91.43%。不能把9个片边界都乘费用,也不能不重新处理到达事件就简单给每个完成时刻加同一个常数。

本例增加费用后,D在B第二段运行期间已经到达,队列顺序恰好与零费用情况一致;换一份到达表可能改变顺序。模拟器必须在交接区间内照常接收新到达者,再按指定派发规则决定目标是否保持。

一个有条件的等待上界 ​

设某任务刚排到队尾,含它在内始终至多 N 个可运行任务;没有高优先级插队,后来任务也只排在它后面;每段最多运行 q,每次交接最多花 c。从任意READY入队时刻计,前面至多有 N−1 段运行,还可能要先付一笔在途或尚未开始的交接,随后逐项换人直到目标开始。因此一个保守上界是

(N−1)q+Nc.

例如A片末重新入队,另有B等待,N=2:先付A→B的 c,B运行 q,再付B→A的 c,A的等待为 q+2c。只数目标之前那一段B,会漏掉离开A时的费用。

若计时起点进一步保证另一个任务已经开始实际运行,就没有那笔额外的初始交接;此时可收紧为 (N−1)(q+c),这正是切换页原有界明确采用的起点。当前片已运行一部分、任务提前完成或阻塞,都会让实际等待更短。

若目标本身在等待磁盘,它还不是READY,不受该界保护;若更高优先级任务可以无限插入,或系统长时间暂停调度,同样失去保证。这里限制的是一次已就绪后的等待,不是整个作业一定在某个截止期前完成。

时间片越短,代价不一定越小 ​

在持续拥挤、每片跑满、每片后都换任务的长时间窗口中,一个周期交付 q 服务并花 c 开销,有用比例趋近

qq+c.

例如 c=0.25 时,q=2 的该比例为 8/9,q=0.25 时只有 1/2。缩片会降低同一轮中别人占用CPU的时间,却也增加交接次数。实际有限主例得到32/35而非8/9,正因为最后只有A、还有短片D,周期假设不成立。

反过来,若 q 大到每项一次就能完成,且没有阻塞,RR退化成FIFO。它并没有自动寻找某个普适的最佳时间片;必须结合交互目标、任务数量和实测切换影响选取。

推论与应用

轮流运行,不是自动按用户公平 ​

若每个进程一张队列席位,一个用户启动十个繁忙进程,另一个用户只有一个,那么前者可取得约十倍的CPU时间。RR公平的是它轮询的实体;把实体改成用户、容器或任务组,需要另一层分配合同。

等长片也只保证CPU时间份额,不保证完成相同工作量。不同程序可能受缓存、内存带宽或指令构成限制;本单元的单位服务模型没有把“1毫秒”解释成固定业务产出。

轮转的队列操作可用常数次入队、出队实现,但计时中断、上下文保存以及缓存干扰另计。对某个实现声称低开销时,应区分数据结构复杂度与真实机器测量,而不是由 O(1) 直接推出“几乎免费”。

参考资料
  • Corbató、Merwin-Daggett、Daley,“An Experimental Time-Sharing System”,1962,pp.336–338:小时间片轮转、计时中断与使用时间记账。
  • Arpaci-Dusseau与Arpaci-Dusseau,OSTEP, Ch.7, §7.7:RR、响应与交接成本取舍。本页明确的同刻次序、收费规则和有限轨迹为自定实验。
关系图谱5 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系

使用的工具