首页/操作系统/02-process/进程的状态与转换 🔗 在 Obsidian 中打开
操作系统 · 02-process

进程的状态与转换

重要度 ★★★★★ 五状态模型就绪运行阻塞挂起
速查
五状态模型:创建→就绪→运行→阻塞→终止。就绪→运行由调度触发(被动);运行→阻塞是进程唯一主动发起的转换。七状态模型增加就绪挂起、阻塞挂起。

速查

项目
五状态模型创建态→就绪态→运行态→阻塞态→终止态
七状态模型增加就绪挂起、阻塞挂起
调度触发就绪→运行:进程调度(低级调度)
主动行为运行→阻塞(进程自己阻塞自己)

核心概念

五状态模型

  1. 创建态(New):进程正在被创建,分配资源、初始化 PCB
  2. 就绪态(Ready):获得了除 CPU 之外的一切所需资源,只等待 CPU
  3. 运行态(Running):占有 CPU,正在执行
  4. 阻塞态(Blocked/Waiting):因等待某事件(如 I/O 完成)而暂停执行
  5. 终止态(Terminated):进程执行结束,OS 回收资源

状态转换

  • 创建态 → 就绪态:创建完成,进入就绪队列
  • 就绪态 → 运行态:被调度程序选中,获得 CPU(进程调度)
  • 运行态 → 就绪态:时间片用完 或 被高优先级进程抢占
  • 运行态 → 阻塞态:请求 I/O 或等待事件(主动行为
  • 阻塞态 → 就绪态:等待的事件发生(被动行为
  • 运行态 → 终止态:正常结束或异常终止

七状态模型(引入挂起):就绪挂起(在外存但已就绪)、阻塞挂起(在外存且等待事件)。

关键性质

转换原因主动/被动触发者
创建→就绪初始化完成被动OS
就绪→运行被调度选中被动调度程序
运行→就绪时间片用完/被抢占被动时钟中断/OS
运行→阻塞请求资源/等待事件主动进程自身
阻塞→就绪等待的事件发生被动其他进程/OS/硬件

常见考法

考法解题套路
状态转换方向运行→阻塞是唯一由进程自己发起的转换
不存在的转换阻塞→运行不可能(须先回就绪);就绪→阻塞不可能
挂起状态挂起=换出到外存;就绪挂起、阻塞挂起
哪个行为主动运行→阻塞是进程主动调用阻塞原语

易错点

注意
  • 运行→阻塞是进程的主动行为(唯一主动转换)
  • 阻塞→就绪被动行为(外部事件触发)
  • 不存在就绪→阻塞:就绪态未获 CPU,无法主动阻塞
  • 不存在阻塞→运行:须先回就绪,再经调度
  • 运行→就绪两种:时间片用完、被高优先级抢占

核心结论

必背
  1. 五状态模型是理解进程状态的基础
  2. 运行→阻塞是唯一的进程主动发起的状态转换
  3. 阻塞态不能直接到运行态,就绪态不能直接到阻塞态——常考陷阱
  4. 七状态模型引入挂起是为实现虚拟内存,将进程换出到外存
  5. 就绪态只缺 CPU,阻塞态还缺其他资源/事件

记忆卡片

五状态模型的五个状态?
创建态→就绪态→运行态→阻塞态→终止态。
哪个转换是主动行为?
运行→阻塞(进程调用阻塞原语等待事件)。
为何不存在就绪→阻塞?
就绪态未占有 CPU,没有"正在执行"语境去发起阻塞。
就绪态与阻塞态区别?
就绪态只缺 CPU;阻塞态还等待其他事件(如 I/O 完成)。
七状态多出哪两个?
就绪挂起、阻塞挂起(进程被换出到外存)。

交互动画 · 状态转换(含非法转换)

手动模式
创建态 就绪态 运行态 阻塞态 终止态
点击合法转换观察状态推进;点击「尝试」按钮验证哪些转换不可能
运行→阻塞是唯一主动转换;阻塞→就绪由 I/O 完成中断被动触发

相关知识点

process-and-thread process-concept-and-features

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。