进程的状态及转换
进程的三态模型
-
执行(running)态:进程占有处理器正在运行的状态。
进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态; 在多处理机系统中,则有多个进程处于执行状态。
-
就绪(ready)态:进程具备运行条件,等待系统分配处理器以便运行的状态。
当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行,进程这时的状态称为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为就绪队列。
-
阻塞(block)态:又称等待态,指进程不具备运行条件,正在等待某个时间完成的状态。
也称为等待或睡眠状态,一个进程正在等待某一事件发生(例如请求I/O而等待I/O完成等)而暂时停止运行,这时即使把处理机分配给进程也无法运行,故称该进程处于阻塞状态。
引起进程状态转换的具体原因如下:
执行态→阻塞态:等待使用资源;如等待外设传输;等待人工干预。
阻塞态→就绪态:资源得到满足;如外设传输结束;人工干预完成。
执行态→就绪态:运行时间片到;出现有更高优先权进程。
就绪态→执行态:CPU 空闲时选择一个就绪进程。
进程的五态模型
五态模型在三态模型的基础上增加了创建态(new)和终止态(exit)。
-
创建态:对应于进程被创建时的状态,尚未进入就绪队列。
1.为新进程分配所需要资源和建立必要的管理信息(分配PCB及其所需资源),设置该进程为就绪态,并等待被调度执行
2.但进程所需的资源尚不能满足,例如:内存不够用,无法将该进程设为就绪态,则此时创建工作并未完成,进程不能被直接调用,
该状态就为创建态
3.当处于创建态的进程获取到它所需的资源后,则
转为就绪态
-
终止态:指进程完成任务到达正常结束点,或出现无法克服的错误而异常终止,或被操作系统及有终止权的进程所终止时所处的状态。
处于终止态的进程不再被调度执行,下一步将被系统撤销,最终从系统中消失。
1.先等待操作系统或相关的进程进行善后处理(如抽取信息)。
2.然后回收占用的资源并被系统删除(将PCB清零并归还系统)。
引起进程状态转换的具体原因如下:
NULL→创建态:执行一个程序,创建一个子进程。
创建态→就绪态:当操作系统完成了进程创建的必要操作,并且当前系统的性能和虚拟内存的容量均允许。
运行态→终止态:当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结。
运行态→就绪态:运行时间片到;出现有更高优先权进程。
运行态→等待态:等待使用资源;如等待外设传输;等待人工干预。
就绪态→终止态:未在状态转换图中显示,但某些操作系统允许父进程终结子进程。
等待态→终止态:未在状态转换图中显示,但某些操作系统允许父进程终结子进程。
终止态→NULL:完成善后操作
进程的七态模型
三态模型和五态模型都是假设所有进程都在内存中的事实上有序不断的创建进程,当系统资源尤其是内存资源已经不能满足进程运行的要求时,必须把某些进程挂起(suspend),对换到磁盘对换区中,释放它占有的某些资源,暂时不参与低级调度。
引起进程挂起的原因是多样的,主要有:
-
终端用户的请求。当终端用户在自己的程序运行期间发现有可疑问题时,希望暂停使自己的程序静止下来。亦即,使正在执行的进程暂停执行;若此时用户进程正处于就绪状态而未执行,则该进程暂不接受调度,以便用户研究其执行情况或对程序进行修改。我们把这种静止状态成为“挂起状态”。
-
父进程的请求。有时父进程希望挂起自己的某个子进程,以便考察和修改子进程,或者协调各子进程间的活动。
-
负荷调节的需要。当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统能正常运行。
-
操作系统的需要。操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。
-
对换的需要。为了缓和内存紧张的情况,将内存中处于阻塞状态的进程换至外存上。
七态模型在五态模型的基础上增加了静止就绪态(ready suspend)和静止阻塞态(blocked suspend)。
-
静止(挂起)就绪态:进程具备运行条件,但目前在
外存
中,只有它被对换到内存才能被调度执行。 -
静止(挂起)阻塞态:表明进程正在等待某一个事件发生且在
外存
中。