系统操作原理:进程的状态和转换(五态模型)
发布时间 - 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蓝牙驱动更新修复【详解】

