Appearance
题目
下列内核的数据结构或程序中,分时系统实现时间片轮转调度需要使用的是( )。
Ⅰ. 进程控制块 Ⅱ. 时钟中断处理程序 Ⅲ. 进程就绪队列 Ⅳ. 进程阻塞队列
错因
A
漏选 Ⅰ PCB——可能觉得"轮转就是按队列轮换、不涉及单个进程的细节"。但每次时间片到、进程被切下去时,必须把当前进程的 PC、寄存器、程序状态字等上下文保存到它的 PCB,等下次轮回到它时再从 PCB 恢复——没有 PCB 这个保存点,轮转切回来后进程就接不上原来的执行流了。
B
只挑 Ⅰ + Ⅳ,把"轮转"误当成"基于阻塞队列的调度"。但 RR 的核心是就绪队列内的轮换:到点就把当前进程踢回就绪队列尾部、从队首拿下一个跑——动的全是就绪队列,跟阻塞队列没关系。阻塞队列是 I/O 操作、等待信号量这些原因停下来的进程待的地方,跟时间片到期是两件事。
D
挑了 Ⅰ + Ⅱ + Ⅳ,漏了核心的 Ⅲ 就绪队列。RR 整个算法的载体就是就绪队列——"轮"指就绪队列里轮换、"转"指队尾队首接着转。把这个漏了,时间片到了从哪里挑下一个进程都没法回答。Ⅳ 阻塞队列反而不是 RR 本身需要的。
总解析
时间片轮转(RR)需要的内核组件,对应到"算法每一步要查 / 改什么"上:
| 组件 | RR 怎么用 | 必需? |
|---|---|---|
| Ⅰ PCB | 时间片到时保存当前进程上下文;下次轮到它时恢复上下文 | ✓ |
| Ⅱ 时钟中断处理程序 | 每个时钟节拍递减时间片计数,到 0 时触发调度 | ✓ |
| Ⅲ 就绪队列 | RR 的载体——队首取出当前进程跑、时间片到把它放回队尾 | ✓ |
| Ⅳ 阻塞队列 | 跟 RR 无直接关系(进程因 I/O 等阻塞才进阻塞队列;这是另一种状态切换) | ✗ |
整个 RR 流程串起来:
时钟节拍 → 时钟中断处理程序 → 当前进程时间片 - 1
↓ (减到 0)
保存上下文到 PCB
↓
挂回就绪队列尾
↓
从就绪队列首取下一个 PCB
↓
恢复上下文,开始跑阻塞队列是进程因 I/O / 等待事件停下时才用的——跟时间片到期"还能跑只是轮到下一个了"是两个完全不同的状态切换,不参与 RR 的主流程。
最终答案是 C。