Skip to content

2015年 408 操作系统 第 25 题

操作系统2015年选择题2分

题目

下列选项中,会导致进程从执行态变为就绪态的事件是( )。

错因

A

P(wait) 操作如果信号量 S < 0 会阻塞当前进程——状态转换是执行 → 阻塞,不是执行 → 就绪。把 wait 操作的方向看反了:等不到资源是"主动让权进阻塞队列",跟"被动让位但仍可执行"完全不同。

B

申请内存失败时进程没有内存资源继续跑,进入阻塞态等内存可用——又是"执行 → 阻塞"。把"失败"误以为是"被打断"也不对:申请内存失败是进程自己等不到资源,不是被调度器抢走 CPU。

C

启动 I/O 后进程要等 I/O 完成,所以进入阻塞态——执行 → 阻塞。这个是 I/O 阻塞的最经典场景。把"启动 I/O"和"主动等数据"分开看不对——启动设备就意味着这次访问要等设备响应,进程必然被挂起。

总解析

进程三态转换里,执行 → 就绪的转换有一个关键特征:进程仍能继续跑,只是 CPU 让给别人了。区别于阻塞——阻塞是等不到外部事件、暂时跑不动

事件进程状态变化类型
P(wait) 阻塞执行 → 阻塞(等信号量)等资源
申请内存失败执行 → 阻塞(等内存)等资源
启动 I/O执行 → 阻塞(等 I/O)等外设
被高优先级进程抢占执行 → 就绪仅让 CPU、本身仍可跑
时间片用完执行 → 就绪同上
主动 yield执行 → 就绪同上

判定钥匙:让出 CPU 之后还能立刻跑吗?能 → 就绪;要等 → 阻塞。

逐项核对:

  • A P(wait) 阻塞:等信号量 → 阻塞(不是就绪)
  • B 申请内存失败:等内存 → 阻塞(不是就绪)
  • C 启动 I/O:等 I/O → 阻塞(不是就绪)
  • D 被抢占:CPU 让给高优先级进程,自己数据齐备、随时能继续就绪

最终答案是 D

最后更新:

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

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