操作系统进程状态模型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32623363/article/details/87891224

操作系统中的进程有三个基本状态,分别是:就绪、运行、阻塞

就绪:万事俱备,只欠CPU
运行:正在执行
阻塞:进程因为等待某些事件的发生而处于等待状态

这三个状态合起来,就是操作系统的“三状态进程模型”,如下图:
在这里插入图片描述

然后我们可能会疑惑,进程难道天生就是就绪态吗?而且进程执行完后又是什么态呢?
实际上,进程还具有创建态和终止态。
创建态:系统已经为该进程分配PID和PCB,但是还没有给进程提供运行所需要的资源(因为资源有限);
终止态:进程已经执行完毕或者被强制停止了(比如windows中的进程管理器直接关掉某个进程),这时操作系统将执行一些数据统计工作,统计一下该进程执行过程中所消耗的各种资源,同时还会进行资源的回收工作。
加入了上面的两个状态,那么我们就可以得到“五状态进程模型”,如下图:
在这里插入图片描述

而五状态进程模型的状态模型如下,可以看到有多个等待队列,这是因为操作系统会将进程等待的事件的不同而将他们分成不同的队列。而且实际上就绪队列往往也不止一个(比如在多级反馈队列调度算法中)
在这里插入图片描述

本来大家或许以为到此就结束了,但是实际上并没有。试想,如果操作系统中的进程实在太多了,都堆在内存里岂不是会造成内存的严重不足?那怎么办呢?

这时进程的另外一个状态就出场了:挂起状态
挂起状态是指当操作系统中运行的进程实在太多了的时候,操作系统会将一部分进程的所有状态保存到磁盘上,以节约内存空间。
而挂起态又分就绪挂起和阻塞挂起。
就绪挂起就是指就绪的进程被挂起了,阻塞挂起当然就是被阻塞的进程被挂起咯。

下图就是引入了就绪挂起和阻塞挂起后的“七状态模型”
在这里插入图片描述
阻塞挂起的进程在其所等待的事件发生了以后可以自动转为就绪挂起。
正在运行的进程如果执行完后也是有可能直接被转为就绪挂起的。

参考资料:陈向群老师的操作系统课程

猜你喜欢

转载自blog.csdn.net/qq_32623363/article/details/87891224