[操作系统] 进程的状态
进程的状态
进程的生命周期管理
进程的状态变化模型
进程挂起模型
进程的生命期管理
进程的创建
进程运行
进程等待
进程唤醒
进程结束
进程创建
引起进程创建的三个主要事件
进程初始化时 MIT进程
用户请求创建新的进程
正在运行的进程执行了创建进程的系统调用
(创建了进程控制块)
进程运行
内核选择一个就绪的进程,让他占用处理机并执行
进程等待
以下情况下 进程等待
请求并等待系统服务,无法马上完成
启动某种操作,无法马上完成
需要的数据没有到达
进程只能阻塞自己,因为只有进程自己知道何时需要等待某事的发生
进程唤醒
进程唤醒的原因:
被阻塞的进程需要的资源可以被满足
被阻塞进程等待的事件发生
将该进程的PCB插入到就绪队列
进程只能被别的进程唤醒 或者操作系统唤醒
进程结束
以下四种情形 进程结束
正常退出(自愿)
错误退出(自愿)
致命错误(强制的)
被其他进程所杀(强制的)
进程状态变化模型
进程的三种基本状态 (同时只会处在一个状态)
运行状态: 正在处理机上运行
就绪状态: 进程获得了除了处理机之外的一切资源,一旦得到处理机即可运行
等待状态(阻塞态): 一个进程等待某件事情等暂时停止运行,等待某资源 或者事件
其他基本状态:
创建状态:正在创建 还没有撞到就绪状态之前的状态
结束状态:一个进程正在从系统中小时时的状态,这是因为进程结束或者由于其他原因所导致的。PCB彻底消失了 才算是完全结束了
进程挂起
为了充分利用系统资源,被挂起的进程不占用内存空间,他在磁盘上
阻塞挂起状态: 进程在外寸并且等待某事件的出现
就绪挂起状态: 进程在外存,但是只要进入内存,就能运行
挂起(Suspend):把一个进程从内存转到外存;可能有以下几种情况
●阻塞到阻塞挂起:没有进程处于就绪状态或就绪进程要求更多内存资源时,会进行这种转换,以提交新进程或运行就绪进程; (把阻塞的进程挂起)
●就绪到就绪挂起:当有高优先级阻塞(系统认为会很快就绪的)进程和低优先就绪进程时,系统会选择挂起低优先级就绪进程;(操作系统会把他认为的很久才唤醒的挂起)
●运行到就绪挂起:对抢先式分时系统当有高优先级阻塞挂起进程因事件出现而进入就绪挂起时,系统可能会把运行进程转到就绪挂起状态;
在外存时的状态转换:
●阳塞挂起到就绪挂起:当有阻塞挂起进程因相关事件出现时,系统会把阻塞挂起进程转换为就绪挂起进程。
解挂/激活: 把一个进程从外存转换到内存
■就绪挂起到就绪:没有就绪进程或挂起就绪进程优先级高于就绪进程时,会进行这种转换;
■阻塞挂起到阻塞:当一个进程释放足够内存时,系统会把一个高优先级阻塞挂起(系统认为会很快出现所等待的事件)进程转换为阻塞进程;
状态队列
■由操作系统来维护一组队列,用来表示系统当中所有进程的当前状态;
■不同的状态分别用不同的队列来表示就绪队列、各种类型的阻塞队列);
■每个进程的PCB都根据它的状态加入到相应的队列当中,当一个进程的状态发生变化时,它的PCB从一个状态队列中脱离出来,加入到另外一个队列。
作者:cjdty
出处:https://www.cnblogs.com/cjdty/p/10911576.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库