Skip to content

进程状态与转换

考情分析

进程状态转换是进程管理的基础知识,408 选择题中经常出现「以下哪种状态转换是不可能的」这类题目。属于 🔥🔥 中高频考点。

进程从创建到消亡,并不是一路执行到底的。它会因为等 I/O 而暂停,因为被抢占而让出 CPU——理解这些状态切换,是理解整个进程管理的基础。

三状态模型

最基本的进程状态模型包含三种状态:

状态说明
就绪(Ready)已获得除 CPU 外的所有资源,等待 CPU 分配
运行(Running)正在 CPU 上执行
阻塞(Blocked/Waiting)等待某事件发生(如 I/O 完成),即使给 CPU 也无法执行

五状态模型

在三状态基础上增加创建态终止态

状态转换及触发条件

转换触发条件由谁完成
创建→就绪系统完成进程创建,分配好资源操作系统
就绪→运行调度程序选中该进程调度程序
运行→就绪时间片用完或被更高优先级进程抢占操作系统/调度程序
运行→阻塞进程主动请求等待事件(如 I/O、P操作)进程自身(主动行为)
阻塞→就绪等待的事件已发生(如 I/O 完成、V操作)操作系统
运行→终止进程执行完毕或发生异常进程自身/操作系统

易错

以下转换不可能发生(选择题高频陷阱):

  • 就绪→阻塞:进程没在运行,无法发出 I/O 请求
  • 阻塞→运行:必须先到就绪态,再被调度才能运行
  • 终止→任何状态:进程已经结束

另一个常见错误:认为"运行→就绪"只有时间片用完一种情况。实际上抢占式调度中,更高优先级进程到达也会导致运行→就绪。

七状态模型(引入挂起)

在虚拟存储系统中,为了将进程从内存换出到外存(腾出内存空间),引入两种挂起状态

状态说明
挂起就绪(Ready Suspend)进程在外存中,但只要调入内存就可以运行
挂起阻塞(Blocked Suspend)进程在外存中,且正在等待某事件

挂起和阻塞容易混淆——阻塞是"我在等快递,干不了别的",挂起是"我被赶出办公室去走廊待着了"。一个是等事件,一个是被换出内存。

挂起(Suspend)和阻塞(Block)的区别:

比较挂起阻塞
原因系统资源不足,被换出到外存等待某事件完成
位置进程映像在外存进程映像在内存
恢复方式被激活(换入内存)等待的事件完成

交互可视化

通过下方的交互动画,观察进程在不同状态之间的转换过程:

加载可视化中...

进程状态的组织

操作系统使用队列来组织处于不同状态的进程:

就绪队列:  PCB₁ → PCB₃ → PCB₇ → null
阻塞队列:  PCB₂ → PCB₅ → null(可按事件类型分多个队列)
运行指针:  → PCB₄(单处理机只有一个)

考研高频考点

  • 🔥🔥🔥 哪些状态转换是合法的/不可能的(选择题必考)
  • 🔥🔥🔥 运行→阻塞是进程主动行为,阻塞→就绪是被动行为
  • 🔥🔥 五状态模型的各状态含义
  • 🔥🔥 七状态模型中挂起和阻塞的区别
  • 🔥 就绪态和阻塞态的本质区别(是否缺 CPU 以外的资源)

进程有了状态,但每次创建进程的开销都很大。有没有更轻量的执行单元?下一篇看线程如何解决这个问题。

真题练习

相关真题(7题)

2024Q28选择题2分

进程状态转换:读文件、申请外设、wait()都可能导致阻塞

2023Q27选择题2分

状态转换:主动出让CPU(yield)使线程从执行态变为就绪态

2019Q24选择题2分

进程唤醒:I/O结束和退出临界区可唤醒等待进程

2018Q27选择题2分

进程阻塞:申请临界资源和读磁盘可能阻塞,被抢占是变就绪态

2017Q45综合题7分

综合题:二级分页虚拟存储管理的地址变换和进程状态分析

2015Q25选择题2分

状态转换:被抢占从执行态→就绪态,其他选项是→阻塞态

2014Q26选择题2分

I/O完成后:将进程从阻塞态改为就绪态