【操作系统】进程的状态转化

三态模型

进程在其生命周期内可能具有多种状态,一般而言,运行态,就绪态和等待态为三种基本状态。

  • 运行态(running):进程已获得CPU,其程序正在执行的状态。

    在单处理机系统中,只有一个进程处于执行状态; 在多处理机系统中,则有多个进程处于执行状态。

  • 就绪态(ready):进程已处于准备好运行的状态。

    当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行,进程这时的状态称为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为就绪队列。

  • 等待态(wait):正在执行的进程由于发生某事件(如I/O请求、申请缓冲区失败等)暂时无法继续执行时的状态。

    也称为阻塞或睡眠状态。系统将处于等待状态的进程排成一个队列,称该队列为等待队列。

状态转化图

在这里插入图片描述

运行态→等待态:等待使用资源;如等待外设传输;等待人工干预。

等待态→就绪态:资源得到满足;如外设传输结束;人工干预完成。

运行态→就绪态:运行时间片到;出现有更高优先权进程。

就绪态→运行态:CPU 空闲时选择一个就绪进程。

五态模型

  • 新建态:

    进程是由创建而成,创建过程很复杂,首先由进程申请一个空白PCB,并向PCB中填写用于控制和管理进程的信息;然后为该进程分配运行时所必须的资源;最后,把该进程转入就绪状态并插入就绪队列之中。如果进程所需的资源尚不能得到满足,比如系统尚无足够的内存使进程无法装入其中,此时创建工作尚未完成,进程不能被调度运行,进程处于创建态。

  • 终止态:

    当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结,它将进入终止状态。进入终止状态的进程将不能再执行,但是在OS中依然保持一个记录,其中保存着状态码和计时统计数据,等待别的进程收集,一旦资源被收集完成,OS会立刻删除该进程。

状态转化图

在这里插入图片描述

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

新建态→就绪态:当操作系统完成了进程创建的必要操作,并且当前系统的性能和虚拟内存的容量均允许。

运行态→终止态:当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结。

运行态→就绪态:运行时间片到;出现有更高优先权进程。

运行态→等待态:等待使用资源;如等待外设传输;等待人工干预。

就绪态→终止态:未在状态转换图中显示,但某些操作系统允许父进程终结子进程。

等待态→终止态:未在状态转换图中显示,但某些操作系统允许父进程终结子进程。

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

七态模型

挂起,激活操作:

引起挂起的原因:
(1) 终端用户的需要。
(2) 父进程请求。
(3) 负荷调节的需要。
(4) 操作系统的需要。

状态转化图
在这里插入图片描述
等待态→挂起等待态:操作系统根据当前资源状况和性能要求,可以决定把等待态进程对换出去成为挂起等待态。

挂起等待态→挂起就绪态:引起进程等待的事件发生之后,相应的挂起等待态进程将转换为挂起就绪态

挂起就绪态→就绪态:当内存中没有就绪态进程,或者挂起就绪态进程具有比就绪态进程更高的优先级,系统将把挂起就绪态进程转换成就绪态。

就绪态→挂起就绪态:操作系统根据当前资源状况和性能要求,也可以决定把就绪态进程对换出去成为挂起就绪态。

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

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

新建态→挂起就绪态:考虑到系统当前资源状况和性能要求,可以决定新建的进程将被对换出去成为挂起就绪态。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章