Appearance
题目
假设某系统使用时间片轮转调度算法进行 CPU 调度,时间片大小为 5 ms,系统共有 10 个进程,初始时均处于就绪队列,执行结束前仅处于执行态或就绪态。若队尾的进程 P 所需 CPU 时间最短,时间为 25 ms。在不考虑系统开销的情况下,则进程 P 的周转时间为( )。
错因
A
少算了一轮或时间片数。常见错法是把 5 轮 × 50 ms 减去 P 自己的最后 5 ms(误以为最后一轮 P 不必跑完),或者把 P 在第 4 轮的末尾就当成结束(4 × 50 = 200)。但 P 需要 25/5 = 5 个完整时间片,第 5 轮跑完才结束,少算一轮就误算到 200。
B
把 P 当成队首来算(忽略了题面"队尾"的位置约束)。如果 P 在队首:每一轮 P 先跑 5 ms、再轮其他 9 个跑 45 ms。P 跑完 5 个时间片:前 4 整轮 (4 × 50 = 200 ms) + 第 5 轮 P 自己跑 5 ms = 205 ms。这是 P 在队首情形的标准答案。本题说 P 在队尾,整整错位 45 ms。"队尾"是关键约束,读题不能跳。
D
多算了一轮——常见错法是误以为第 5 轮 P 跑完后还要等其他 9 个进程"收尾",得到 250 + 45 = 295;或把 25/5 = 5 错算成 6 个时间片,得到 6 轮 × 50 - 5 = 295。但 P 自己跑完即出系统,不需要等其他进程,且 25 / 5 整除恰好需要 5 片,没有"额外的零头"。
总解析
模型回顾:RR 算法每个进程轮流执行 1 个时间片(5 ms)后排到队尾,下一进程接上。
已知条件梳理:
- 时间片 = 5 ms,10 个进程
- P 在队尾位置(第 10 位)
- P 所需 CPU 时间最短 = 25 ms(其他 9 个进程都 ≥ 25 ms)
- 关键推论:前 5 轮内所有进程都不会提前结束(因为最短的 P 也要 5 轮才完成)
P 完成所需时间片数: 个时间片。
关键观察:每一轮(10 个进程各跑一次)耗时 = 10 × 5 = 50 ms。P 在队尾,每一轮 P 都是最后一个跑。
逐轮推演:
| 轮次 | 其他 9 个进程占用区间 | P 占用区间 | P 已运行 | P 剩余 |
|---|---|---|---|---|
| 第 1 轮 | [0, 45] | [45, 50] | 5 | 20 |
| 第 2 轮 | [50, 95] | [95, 100] | 10 | 15 |
| 第 3 轮 | [100, 145] | [145, 150] | 15 | 10 |
| 第 4 轮 | [150, 195] | [195, 200] | 20 | 5 |
| 第 5 轮 | [200, 245] | [245, 250] | 25 | 0 ✓ |
P 在 t = 250 ms 完成。
P 的周转时间:
速算公式(队尾 + 整除情形):
其中 = 进程数, = 时间片, = P 需要的时间片数。本题 ms。
易混点:
- 队首位置: → 简化为 ms(这是错因 B 的来源)
- 队尾位置(本题): ms
最终答案是 C。