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

操作系统进程/线程的状态与转换

进程/线程的状态与转换

进程(或线程)在生命期内,会随着系统资源的竞争、外部事件的到达以及调度策略的作用而不断改变所处状态。直观地说,有时只是差一个“获得 CPU 的机会”,有时则是“必须离开 CPU 去等一个事件”,还有时候已经“占着 CPU 在执行”或“运行结束”。把这些状态的边界与相互转换理顺,判断题目给出的场景就不再费力。

五状态与基本含义

(1)新建:正在创建运行环境与控制信息,操作系统尚未把它纳入可调度的队列。常见动作包括分配并初始化控制块、设置初始寄存器与栈等。
(2)就绪:除了 CPU 以外的一切执行条件都已满足,正在就绪队列中等待“被分配 CPU”。“就绪”与“运行”的分界点仅在于是否拿到 CPU。
(3)运行:已经获得 CPU,指令流处于实际执行中,寄存器现场不断更新。
(4)阻塞:因等待事件而无法继续执行,必须离开 CPU,进入相应的阻塞队列;典型事件如等待 I/O 完成、等待某个同步条件成立等。“阻塞”与“就绪”的差别在于是否仍缺少一个外部事件。
(5)结束正常结束/异常终止后退出系统,操作系统回收其占用的内存与打开的文件并撤销控制块。

把握要点:就绪只差 CPU;阻塞还差事件。

状态转换:流程图与逐点解析

在这里插入图片描述

(1)创建完成:新建阶段的初始化工作结束,具备被调度资格,于是从“新建”进入“就绪”。此时仍未占用 CPU。
(2)调度分派:调度器从就绪队列挑选目标,把 CPU 分给它,并装入其寄存器现场,状态由“就绪”转为“运行”。该动作改变的是使用权,不是资源归属。
(3)时间片用尽/被抢占:分时系统时间片耗尽时,当前“运行”实体必须让出 CPU;若更高优先级实体到达,也会触发抢占。两种情形的落点相同——回到“就绪”等待下一次分派。
(4)等待事件:运行过程中遇到必须依赖外部条件的位置(如访问磁盘、等待锁),继续占着 CPU 只会空转,因而主动离开 CPU 转入“阻塞”。
(5)事件完成:阻塞原因消除(I/O 完成、条件满足),实体再次具备执行条件,从“阻塞”返回“就绪”,等待调度分派
(6)正常结束/异常终止:程序自然收尾或出现不可恢复错误,直接进入“结束”,随后由系统回收相关资源并撤销控制信息。

补充说明:线程沿用同一组状态名称与转换关键词——“创建完成、调度分派、时间片用尽/被抢占、等待事件、事件完成、正常结束/异常终止”。差异主要体现在影响范围上:线程共享所属进程的地址空间与大多数资源,因而“异常终止”往往会牵连整个进程;不同进程之间则具有更强的隔离性。


文章转载自:

http://MsPkCtS6.skrcn.cn
http://gfC9XAoX.skrcn.cn
http://jCt2lWIR.skrcn.cn
http://7iaWjMlM.skrcn.cn
http://X6h9hdNJ.skrcn.cn
http://Y8ZqUasX.skrcn.cn
http://JMs5B3Yd.skrcn.cn
http://VIW0g9t6.skrcn.cn
http://RRYhzlZe.skrcn.cn
http://FUXnBm1J.skrcn.cn
http://49hOp4pu.skrcn.cn
http://SK4UHs8p.skrcn.cn
http://GgJbVmsK.skrcn.cn
http://QVjLefsL.skrcn.cn
http://tEdHgE9p.skrcn.cn
http://tRxj86rl.skrcn.cn
http://wtZRxXRL.skrcn.cn
http://iqqixRNw.skrcn.cn
http://YlrEYCUV.skrcn.cn
http://jO4HmwPf.skrcn.cn
http://BlWNhTxg.skrcn.cn
http://Fv8Zlvgl.skrcn.cn
http://DYDljiBQ.skrcn.cn
http://Cc0SuINP.skrcn.cn
http://CRIpF81h.skrcn.cn
http://uJtqi9g5.skrcn.cn
http://9yQ65wSD.skrcn.cn
http://XjkmSrYC.skrcn.cn
http://NkNK7aW8.skrcn.cn
http://hpbHG2GR.skrcn.cn
http://www.dtcms.com/a/373306.html

相关文章:

  • 保姆级教程 | travis-Linux版本安装编译
  • 【HarmonyOS 6】Install Failed: error: failed to install bundle.code:9568322
  • STM32精准控制水流
  • Failed to connect to github.com port 443 after 21s
  • 视频画质差怎么办?AI优化视频清晰度技术原理与实战应用
  • comfyUI 暴露网络restful http接口
  • Python程序使用了Ffmpeg,结束程序后,文件夹中仍然生成音频、视频文件
  • 【CFA三级笔记】资产配置:第二章 资本市场预期(预测资产收益)
  • CSS3核心技术
  • Redis 发布订阅模式:轻量级消息系统实战指南
  • 简单粗暴的Linux入门以及基础命令
  • SME-Econometrics
  • ActiveMQ、RocketMQ、RabbitMQ、Kafka 的全面对比分析
  • 无人机方案如何让桥梁监测更安全、更智能?融合RTK与超高分辨率成像,优于毫米精度
  • 嵌入式 - ARM1
  • 零基础入门AI:Transformer详解(自注意力机制、前馈神经网络等)
  • 小红书获取用户作品列表API接口操作指南
  • MySQL——事务、MVCC
  • vue2 elementUI 登录页面实现回车提交登录的方法
  • 数据库约束表的设计
  • ScanNet: Richly-annotated 3D Reconstructions of Indoor Scenes 数据集构建
  • c++primer 个人学习总结--高级主题
  • 【AI】AI 评测入门(二):Prompt 迭代实战从“能跑通”到“能落地”
  • 经验分享:如何让SAP B1数据库性能提升50%
  • kaggle_吃鸡_数据预处理随机森林
  • Excel随机金额或数字分配方法
  • cocos异步加载问题
  • Spring Boot 多数据源配置
  • 信奥赛csp初赛高频考点真题分类解析之:基本运算
  • langchain 输出解析器 Output Parser