系统操作原理:进程的状态和转换(五态模型)

发布时间 - 2025-06-27 00:00:00    点击率:

一、进程状态与转换

1.1 进程的三态模型

基于进程在执行过程中可能出现的情况,定义了以下三种状态:

运行(running)态:指进程正在使用处理器执行程序。在单处理器系统中,仅有一个进程处于运行状态;在多处理器系统中,则可能有多个进程同时运行。

就绪(ready)态:进程已具备运行条件,仅等待系统分配处理器即可执行。多个处于就绪状态的进程通常排队等待,形成就绪队列。

等待(wait)态:也称阻塞态或睡眠态,进程因等待某事件完成而暂停运行,例如等待I/O操作结束。即使分配处理器,进程也无法立即运行。

进程状态转换的具体原因如下:

运行态→等待态:进程需要等待资源,如外设数据传输或人工干预。

等待态→就绪态:等待的资源或事件完成,如I/O操作结束或人工干预完成。

运行态→就绪态:进程的时间片用完,或有更高优先级的进程需要运行。

就绪态→运行态:当处理器空闲时,系统选择一个就绪队列中的进程运行。

1.2 进程的五态模型

在三态模型的基础上,五态模型增加了新建态(new)和终止态(exit):

新建态:表示进程被创建但尚未进入就绪队列。创建进程需要两个步骤:1.分配资源并建立管理信息;2.设置为就绪态,等待被调度。

终止态:表示进程完成任务、出现无法解决的错误或被其他进程或操作系统终止。终止进程涉及两个步骤:1.进行善后处理;2.回收资源并从系统中删除。

内核学习网站:

Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈

引起进程状态转换的具体原因如下:

NULL→新建态:执行程序,创建子进程。

新建态→就绪态:操作系统完成创建进程的操作,且系统性能和内存允许。

运行态→终止态:进程达到自然结束点、出现无法解决的错误、被操作系统或其他有终止权的进程终止。

运行态→就绪态:进程时间片用完,或有更高优先级的进程需要运行。

运行态→等待态:等待资源,如外设传输或人工干预。

就绪态→终止态:某些操作系统允许父进程终止子进程(未在图中显示)。

等待态→终止态:某些操作系统允许父进程终止子进程(未在图中显示)。

终止态→NULL:完成善后操作。

1.3 进程的七态模型

三态模型和五态模型假设所有进程都在内存中运行,但当系统资源(特别是内存)不足以满足所有进程运行时,需要将某些进程挂起(suspend),对换到磁盘交换区,释放其资源,暂不参与调度,以平滑系统负载。

七态模型在五态模型基础上增加了挂起就绪态(ready suspend)和挂起等待态(blocked suspend):

挂起就绪态:进程具备运行条件,但目前在外存中,需对换到内存才能被调度执行。

挂起等待态:进程等待某事件发生,且目前在外存中。

引起进程状态转换的具体原因如下:

等待态→挂起等待态:根据当前资源和性能要求,操作系统决定将等待态进程对换出去。

挂起等待态→挂起就绪态:等待事件发生后,挂起等待态进程转为挂起就绪态。

挂起就绪态→就绪态:当内存中无就绪态进程或挂起就绪态进程优先级更高,系统将挂起就绪态进程转为就绪态。

就绪态→挂起就绪态:根据当前资源和性能要求,操作系统决定将就绪态进程对换出去。

挂起等待态→等待态:当有足够内存且挂起等待态进程优先级高,操作系统知晓其等待事件即将结束时,可能发生此状态转换。

运行态→挂起就绪态:高优先级的挂起等待态进程等待事件结束后需抢占CPU,但内存不足,导致运行态进程转为挂起就绪态。运行态进程也可自挂起。

新建态→挂起就绪态:根据当前资源和性能要求,操作系统决定新建进程对换出去。

挂起进程等同于不在内存中的进程,因此挂起进程不参与低级调度,直到被调换进内存。

挂起进程具有以下特征:

  • 该进程不能立即执行。
  • 挂起进程可能等待某事件,但事件结束并不能使进程具备执行条件(转为挂起就绪态)。
  • 进程进入挂起状态是由于操作系统、父进程或自身阻止其运行。
  • 结束挂起状态的命令只能由操作系统或父进程发出。


# linux  # 操作系统  # 处理器  # ai  # NULL  #   # 事件  # 挂起  # 更高  # 对换  # 多个  # 基础上  # 用完  # 图中  # 外设  # 增加了 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  如何确认建站备案号应放置的具体位置?  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  Laravel如何实现API速率限制?(Rate Limiting教程)  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  Bootstrap整体框架之JavaScript插件架构  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Android自定义listview布局实现上拉加载下拉刷新功能  如何制作一个表白网站视频,关于勇敢表白的小标题?  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  html如何与html链接_实现多个HTML页面互相链接【互相】  Swift开发中switch语句值绑定模式  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  php结合redis实现高并发下的抢购、秒杀功能的实例  Linux网络带宽限制_tc配置实践解析【教程】  智能起名网站制作软件有哪些,制作logo的软件?  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  大连 网站制作,大连天途有线官网?  如何用y主机助手快速搭建网站?  香港网站服务器数量如何影响SEO优化效果?  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  Laravel如何实现用户密码重置功能?(完整流程代码)  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  制作企业网站建设方案,怎样建设一个公司网站?  Laravel如何发送系统通知?(Notification渠道示例)  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  UC浏览器如何设置启动页 UC浏览器启动页设置方法  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  如何在景安云服务器上绑定域名并配置虚拟主机?  iOS正则表达式验证手机号、邮箱、身份证号等  如何在服务器上配置二级域名建站?  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  魔毅自助建站系统:模板定制与SEO优化一键生成指南  Laravel怎么实现模型属性的自动加密  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】