当前位置: 首页 > news >正文

【操作系统】进程状态转换(三态模型/五态模型)

考点频率:★★★★★(几乎必考1-2题)
难度:⭐
建议:熟练画出三态模型转换图,掌握五态模型中新增状态的转换条件

1️⃣ 为什么进程需要状态?

进程在执行过程中,会因CPU调度、I/O请求、资源等待等原因,在不同状态之间切换。操作系统通过记录进程的状态,来决定下一步对其采取什么操作(比如分配CPU、等待资源等)。进程状态是操作系统进行进程调度和资源分配的重要依据。就好比工厂里的订单有“待处理”、“处理中”、“已发货”等状态,以便统筹安排。

2️⃣ 三态模型(最基本的模型)

三态模型将进程分为三种基本状态,它们是进程生命周期的核心。几乎所有操作系统教材都从这里开始讲起。

状态说明典型场景
就绪(Ready)进程已获得除CPU外的所有资源,等待CPU调度刚被创建、时间片用完被换下
运行(Running)进程正在CPU上执行指令被调度选中
阻塞(Blocked/Waiting)进程因等待某事件(如I/O完成)而暂停执行等待键盘输入、等待磁盘读写完成

三态转换图(文字描述)

┌─────────────────────┐ │ ↓ ┌─────┴─────┐ ┌─────┴─────┐ │ 就绪 │────────│ 运行 │ │ (Ready) │ 调度 │ (Running) │ └─────┬─────┘ └─────┬─────┘ │ │ │ 释放CPU │ 等待I/O │ (时间片完/抢占) │ (资源不足) │ ↓ │ ┌─────┴─────┐ └───────────────│ 阻塞 │ 事件发生 │ (Blocked) │ (I/O完成) └───────────┘

四种状态转换(重点记箭头)

转换方向触发条件说明
就绪 → 运行就绪 → 运行进程被调度程序选中由调度算法决定(如时间片轮转、优先级)
运行 → 就绪运行 → 就绪时间片用完 / 被高优先级进程抢占当前进程让出CPU,回到就绪队列末尾(或按优先级插入)
运行 → 阻塞运行 → 阻塞请求I/O / 等待事件(如wait、信号量)进程主动放弃CPU,去等待某种资源或事件
阻塞 → 就绪阻塞 → 就绪I/O完成 / 等待的事件发生进程获得了所需资源,回到就绪队列等待调度

⚠️不能直接转换的状态

  • 阻塞 → 运行(阻塞的进程不能直接获得CPU,必须先转为就绪)
  • 就绪 → 阻塞(就绪进程没有占用CPU,无法主动请求I/O)

3️⃣ 五态模型(更完整的模型)

三态模型缺少对“进程被创建但尚未加载”和“进程已终止但尚未回收”这两个阶段的描述,五态模型在此基础上补充了新建态终止态,让进程的生命周期描述更加完整。五态模型比三态模型多了两个状态,常用于考察进程从生到死的完整过程。

新增状态说明
新建(New)进程正在被创建,尚未加载到内存(如fork()后、exec()之前),操作系统还在为它分配资源、建立PCB。
终止(Terminated)进程已结束执行(调用了exit或收到终止信号),但PCB尚未被回收(僵尸状态),等待父进程读取退出状态后由操作系统回收资源。

五态模型的状态转换

新建 ────→ 就绪 ────→ 运行 ────→ 终止 ↑↑ │ ↓ ││ │ 等待I/O ││ ↓ ││ 阻塞 │└─────────┘ │ 事件发生 └──────────┘

新增转换

  • 新建 → 就绪:操作系统完成进程创建,将其放入就绪队列
  • 运行 → 终止:进程执行完毕或发生致命错误
  • 阻塞 → 就绪:等待的事件发生(同三态)
  • 就绪 → 运行:被调度器选中(同三态)
  • 运行 → 就绪:时间片完或被抢占(同三态)
  • 运行 → 阻塞:请求I/O(同三态)

4️⃣ 三态 vs 五态对比表

对比项三态模型五态模型
状态数3种5种
缺少的状态无新建/终止包含完整生命周期
适用场景简化理解、进程调度核心完整描述进程从创建到消亡
考查重点四种转换关系新增状态的含义

5️⃣ 常见考点与易错点

  1. 进程状态转换由谁控制:调度是操作系统内核完成的,不是进程自己随意跳转。
  2. 运行→阻塞一定是进程主动:因为请求I/O等操作是进程自己发起的(通过系统调用),所以是进程主动行为。
  3. 阻塞→就绪是被动行为:由I/O中断或事件完成唤醒,进程被操作系统移回就绪队列,是被动的。
  4. 新建态和终止态可能不在内存中:新建时PCB在创建但进程映像可能尚未加载;终止时进程映像已被回收但PCB残留。

6️⃣ 经典例题

例题1:某进程从运行状态变为阻塞状态的原因可能是( )。

A. 时间片用完
B. 被更高优先级进程抢占
C. 请求I/O操作
D. 进程调度程序选中了该进程

解析:A和B会导致运行→就绪,D是就绪→运行,只有C(请求I/O)会导致运行→阻塞。选C


例题2:在三态模型中,一个进程从阻塞状态变为就绪状态,通常是由( )触发的。

A. 调度程序
B. 该进程主动请求
C. 等待的事件发生(如I/O完成)
D. 时间片用完

解析:阻塞→就绪是被动转换,由等待的事件完成(如I/O中断)触发。选C


例题3:下列进程状态转换中,不可能发生的是( )。

A. 就绪→运行
B. 运行→就绪
C. 阻塞→运行
D. 运行→阻塞

解析:阻塞→运行不可能,必须先经过阻塞→就绪,再就绪→运行。选C


例题4(五态模型):五态模型中,进程处于“新建态”时,以下描述正确的是( )。

A. 进程正在CPU上执行
B. 进程正在等待I/O操作完成
C. 进程的PCB正在被创建,但尚未进入就绪队列
D. 进程已执行完毕,等待父进程回收

7️⃣ 记忆口诀

就绪等待CPU,运行指令正执行。
阻塞等待I/O完,三种状态要分清。
新建终止补两态,完整生命周期明。

状态转换速记:

  • 就绪→运行:被调度
  • 运行→就绪:时间到/被抢
  • 运行→阻塞:等I/O
  • 阻塞→就绪:I/O完

8️⃣ 小测验(评论区对答案)

某进程正在执行,此时发生了一个时钟中断,该进程的状态转换是( )。
A. 运行→就绪
B. 运行→阻塞
C. 就绪→运行
D. 阻塞→就绪

🔔本专栏日更2篇,点击头像 → 专栏《软考中级高频考点》订阅,第一时间接收新内容

#软考中级 #软件设计师 #进程状态 #三态模型 #五态模型 #操作系统

http://www.jsqmd.com/news/1072043/

相关文章:

  • 【AISMM Level 1权威解码】:SITS 2026初始级企业必现的5大典型特征与避坑指南
  • 【每日一题】LeetCode 560. 和为 K 的子数组 TypeScript
  • 机器学习特征工程:从原始数据到模型输入
  • 终极指南:如何使用League-Toolkit的OP.GG数据功能提升英雄联盟游戏表现
  • 如何用5分钟将单张图片转换为专业PSD分层文件:Layerdivider完全指南
  • jQuery:那个改变前端的库,现在活到了 4.0
  • 3大核心技术突破:解密Bodymovin插件的高效动画转换机制
  • 3步掌握kohya_ss可视化训练监控:从新手到专家的终极指南
  • OpenRocket火箭设计软件:从零开始掌握专业级火箭仿真
  • 如何用Super IO实现Blender高效导入导出:新手也能掌握的完整指南
  • 数字音乐跨平台播放终极解决方案:一站式解决格式兼容性问题
  • 生产环境采样策略:如何平衡数据完整性与存储成本?
  • 怎样快速提升Windows性能:Windows10Debloater系统清理完整教程
  • Linux“一切皆文件接口”的真相:那些“假文件”到底是什么?VFS和接口
  • 3分钟快速上手:BiliTools哔哩哔哩工具箱终极安装配置指南
  • 如何设置huawei的AP?
  • Loop Engineering 与 Spec-Driven Development 结合下的 token 收敛
  • Real-ESRGAN-ncnn-vulkan终极指南:快速实现图像超分辨率修复
  • NANDO开源NAND编程器:从入门到精通的完整指南
  • 靠谱的无外机厨房空调生产厂家哪个好
  • 引线长度按直线算,现场绕一圈不够用
  • Navicat密码解密工具:轻松恢复数据库连接凭证
  • 【AISMM Level 3权威落地指南】:SITS 2026定义级流程规范的5大实操陷阱与避坑清单(2024年唯一经CNITSEC验证的实施路径)
  • 三步免费下载百度文库文档:开源工具的完整使用指南
  • 从零到一:部署基于 FastAPI + ChromaDB + DeepSeek 的 RAG 知识库问答小程序
  • Sign Language Transformers:突破性端到端手语识别与翻译技术
  • 零代码经验,我用Claude Code搓出的生产力工具
  • ImageStrike:一站式图像隐写分析工具,CTF选手的秘密武器
  • ROFL-Player:免费英雄联盟回放播放器完整使用指南
  • PortSwigger SQL注入LAB3