Skip to content

2022年 408 操作系统 第 28 题

操作系统2022年选择题2分

题目

下列事件或操作中,可能导致进程 P 由执行态变为阻塞态的是( )。

Ⅰ. 进程 P 读文件 Ⅱ. 进程 P 的时间片用完 Ⅲ. 进程 P 申请外设 Ⅳ. 进程 P 执行信号量的 wait() 操作

错因

A

漏掉了 Ⅲ(申请外设)。可能觉得"申请"只是提个请求就完事。其实很多外设是独占型(打印机、磁带),如果设备被别的进程占着,申请的进程必须等设备空出来——等待期间挂到设备等待队列,状态就是阻塞。

B

把 Ⅱ 时间片用完误判成阻塞。这是经典混淆:时间片用完只是被强制让出 CPU,进程还能继续跑,只是没轮到——这是就绪态。阻塞 = 必须等某个事件发生才能继续,时间片用完不需要等任何事件,差别就在这里。

C

漏掉了 Ⅰ(读文件)。可能把 read 当成普通函数调用立即返回了。但 read 系统调用底层要等磁盘 I/O 完成(毫秒级),这段等待期进程被挂入设备等待队列、状态切到阻塞,I/O 完成中断后才被唤醒。

总解析

题面问"可能导致执行态 → 阻塞态"——只要存在一种情形会触发阻塞,就算入选。

进程从执行态出去有两条路,区别在于"还能不能继续跑":

转出方向触发条件例子
执行 → 就绪被动让出 CPU 但仍可继续时间片用完、被更高优先级抢占
执行 → 阻塞必须等某个事件发生才能继续等 I/O 完成、等被占资源、等信号量 / 锁

照这条标准逐项判:

操作转向理由
Ⅰ 读文件阻塞等磁盘 I/O 完成,进程挂入设备等待队列
Ⅱ 时间片用完✗ 就绪还能继续跑,只是没轮到
Ⅲ 申请外设阻塞外设被占时进程要等设备空出来
Ⅳ 执行 wait()阻塞S 减 1 后若 S < 0 则进程挂入信号量等待队列

可能阻塞的是 Ⅰ、Ⅲ、Ⅳ。

最终答案是 D

最后更新:

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

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