进程的状态转换

Posted 天界程序员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程的状态转换相关的知识,希望对你有一定的参考价值。

1. 三态模型

  进程状态反映进程执行过程的变化。这些状态随着进程的执行和外界条件的变化而转换。

  一个进程从创建而产生至撤销而消亡的整个生命期间,有时占有处理器执行,有时虽可运行但分不到处理器、有时虽有空闲处理器但因等待某个事件的发生而无法执行,这一切都说明进程和程序不相同,它是活动的且有状态变化的,这可以用一组状态加以刻画。根据三态模型,进程的生命周期可分为如下三种进程状态:

1. 运行状态(running): 占有处理器正在运行
2. 就绪状态(ready): 具备运行条件,等待系统分配处理器以便运行
3. 等待状态(blocked): 又称为阻塞(blocked)态或睡眠(sleep)态,不具备运行条件,正在等待某个事件的完成

参考:三态转换模型图

在这里插入图片描述通常,一个进程在创建后将处于就绪状态。每个进程在执行过程中,任意时刻当且仅当处于上述三种状态之一。同时,在一个进程执行过程中,它的状态将会发生改变。引起进程状态转换的具体原因如下:

(1)运行态 ⇒ \\Rightarrow 等待态:等待使用资源或某事件发生,如等待外设传输;等待人工干预。
(2)等待态 ⇒ \\Rightarrow 就绪态:资源得到满足或某事件己经发生,如外设传输结束;人工干预完成。
(3)运行态 ⇒ \\Rightarrow 就绪态:运行时间片到,或出现有更高优先权进程。
(4)就绪态 ⇒ \\Rightarrow 运行态:CPU空闲时被调度选中一个就绪进程执行。


2. 五态模型

参考:五态转换模型图
在这里插入图片描述对比三态转换模型图增加了两个状态:

  • 静止就绪: 进程具备运行条件但目前在二级存储器中,只有当它被对换到主存才能被调度执行。
  • 静止阻塞: 进程正在等待某一个事件且在二级存储器中。

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

  • 运行态 ⇒ \\Rightarrow 静止就绪态:当一个具有较高优先级的静止阻塞态进程的等待事件结束后,它需要抢占 CPU,,而此时主存空间不够,从而可能导致正在运行的进程转化为静止就绪态。另外处于运行态的进程也可以自己挂起自己。

  • 活跃阻塞态 ⇒ \\Rightarrow 静止阻塞态:如果当前不存在就绪进程,那么至少有一个活跃阻塞态进程将被对换出去成为静止阻塞态;操作系统根据当前资源状况和性能要求,可以决定把活跃阻塞态进程对换出去成为静止阻塞态。

  • 静止阻塞态 ⇒ \\Rightarrow 静止就绪态:引起进程等待的事件发生之后,相应的静止阻塞态进程将转换为静止就绪态。

  • 静止就绪态 ⇒ \\Rightarrow 活跃就绪态:当内存中没有就绪态进程,或者静止就绪态进程具有比活跃就绪态进程更高的优先级,系统将把静止就绪态进程转换成活跃就绪态。

  • 活跃就绪态 ⇒ \\Rightarrow 静止就绪态:操作系统根据当前资源状况和性能要求,也可以决定把活跃就绪态进程对换出去成为静止就绪态。

  • 静止阻塞态 ⇒ \\Rightarrow 活跃阻塞态:当一个进程等待一个事件时,原则上不需要把它调入内存。但是在下面一种情况下,这一状态变化是可能的。当一个进程退出后,主存已经有了一大块自由空间,而某个静止阻塞态进程具有较高的优先级并且操作系统已经得知导致它阻塞的事件即将结束,此时便发生了这一状态变化。



结束语:每天清晨洗脸的时候,顺便对着镜子练习。多想一些愉快的事物,或令你有成就感的事物,并学会把这种感情表现在脸上。试着去想今天可能发生令自己高兴的事,诸如:今天这笔生意可以成交,可以晚上与妻子去品尝大排档,孩子从明天开始放假返家了——等等,然后你带着愉悦的心情,收紧下巴,抬头向前,走出家门。深深地呼吸,以便吸收太阳光。碰到朋友时,以笑脸相迎,握手时要用力。不必担心会遭到误解和嘲笑。在内心不断重复快乐的信念。这样,你周围的人或事便会如你期待的那样顺心如意。

以上是关于进程的状态转换的主要内容,如果未能解决你的问题,请参考以下文章

进程的状态及转换

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

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

Linux进程状态转换图

进程的状态和转换

进程的三种基本状态及其转换