Skip to content

2014年 408 操作系统 第 26 题

操作系统2014年选择题2分

题目

一个进程的读磁盘操作完成后,操作系统针对该进程必做的是( )。

错因

B

把 I/O 完成误以为是"惩罚信号"——觉得这进程刚刚阻塞过、占了等待时间,应该降低优先级。实际上 I/O 完成是好事:等待这条数据的进程现在可以继续干活了,OS 没理由因此降它的优先级。在多数 OS 里 I/O 密集型进程的优先级反而会被(响应性优化),不是降。

C

读磁盘是把数据从磁盘读进进程已经分配好的内存缓冲区——内存早在 read 系统调用时就准备好了,I/O 完成时数据填进去就行,不会触发新的内存分配。把"完成 I/O"和"分配内存"挂钩混淆了 I/O 流程。

D

时间片是调度器的概念,跟 I/O 完成没关系。时间片大小要么是固定的(RR 配置),要么按调度策略调整(多级反馈队列里降到下一级队列时变长),都不是因为某次 I/O 结束触发的。把"奖励 I/O 进程"误推成了"加大时间片"。

总解析

进程发起读磁盘时,发生过这串状态:

运行 → (read 系统调用,等 I/O) → 阻塞(在 I/O 等待队列)

I/O 完成后这个进程不能再睡——OS 必须把它叫醒,让调度器有机会再选它。具体做法:

  1. 把进程从 I/O 等待队列里拿出来
  2. 状态从阻塞改成就绪
  3. 把它挂到就绪队列,等调度器选

这一整套动作就是 OS 在 I/O 中断处理程序里的"唤醒"操作。题问"必做",A 修改状态为就绪正是其中最核心的一步,没有它进程永远醒不过来。

选项是否必做为什么
A 改为就绪态必做唤醒进程的核心动作
B 降低优先级不做I/O 完成不是惩罚,多数 OS 反而会奖励
C 分配内存不做内存早在 read 调用时备好,不重新分
D 增加时间片不做时间片大小由调度策略管,跟 I/O 无关

最终答案是 A

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数