Skip to content

2018年 408 操作系统 第 27 题

操作系统2018年选择题2分

题目

下列选项中,可能导致当前进程 P 阻塞的事件是( )。

Ⅰ. 进程 P 申请临界资源 Ⅱ. 进程 P 从磁盘读数据 Ⅲ. 系统将 CPU 分配给高优先级的进程

错因

A

承认 Ⅰ 申请临界资源会阻塞,但漏掉了 Ⅱ。可能把"读磁盘"想成了 CPU 直接读、没意识到磁盘 I/O 远远慢于 CPU——OS 一定会把进程切到阻塞态等数据就绪,这是 I/O 阻塞的典型场景。

B

只承认了 Ⅱ 这种"等硬件 I/O"的阻塞,把 Ⅰ"申请临界资源"理解成了"瞬间能拿到的事"。但临界资源就是一次只允许一个进程使用,别人正占着的话,进程 P 必须挂起进等待队列——这就是阻塞,跟等 I/O 在状态转换上是一回事(都是运行 → 阻塞)。

D

把"被高优先级进程抢占"误认成阻塞了。被抢占时进程 P 是从运行态变就绪态(CPU 让出去了,但数据齐备、随时能继续跑),而阻塞态是"等某个事件、暂时跑不了"——两者在三态模型里完全不同。区分钥匙:让出 CPU 是因为"调度选了别人"还是"自己等不到东西"。

总解析

三态模型里"阻塞"是等待外部事件而暂时无法继续执行。被动让出 CPU 不一定就是阻塞,要看让出后进程在哪个队列里。

状态转换触发场景进入哪种状态
运行 → 阻塞等 I/O / 等临界资源 / 等信号量 / 等通信对方阻塞队列
运行 → 就绪时间片用完 / 被高优先级进程抢占 / 进程主动 yield就绪队列
阻塞 → 就绪等待事件发生(被唤醒)就绪队列

逐个判:

  • Ⅰ 申请临界资源:被别人占用时进入资源等待队列 → 阻塞
  • Ⅱ 从磁盘读数据:典型 I/O 等待,磁头/数据就绪要时间 → 阻塞
  • Ⅲ CPU 分给高优先级进程:当前进程被抢占,但数据齐备、随时可跑 → 进就绪队列,不是阻塞 ✗

仅 Ⅰ Ⅱ 会让 P 阻塞。

最终答案是 C

最后更新:

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

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