进程三态状态装换图
注意:创建和退出不是进程的状态。创建操作不做重点解释。阻塞也叫等待,和就绪的区别:等待是等待除CPU以外的资源,而就绪等待的是CPU资源。
用户发出命令,我要运行这个程序,然后,操作系统会就会创建进程,并为它分配资源(主要是内存空间),进程创建成功,此时把该进程插入到就绪队列中,进程的就绪状态的意思是,告诉操作系统我现在可以执行了,给我CPU让我运行吧; 操作系统的一个程序给就绪队列中的进程分配一定的时间让他们轮流占用CPU资源,一个就绪进程得到CPU资源后,就变成了运行状态; CPU执行某进程中的指令要求调用某一资源时,且该资源别的进程正在用,那么操作系统的这个程序会把该进程的状态变为阻塞状态,例如:指令要求用打印机,但是打印机正在打印东西,无法现在用,那么,操作系统会修改该进程的状态,并把他由就绪队列变为阻塞队列中; 当那个进程中的事件请求完成,操作系统的一个程序会把该进程的状态就会由阻塞状态变为就绪状态,然后循环; 当进程的程序正常运行结束后(可以指程序自动的关闭,也可以指用户正常关闭),进程中有一些事后处理的指令,会把队列中记录去掉。
进程五态状态装换图
注意:在进程的五态图中引入了挂起和激活的操作,另外,进程创建时可以先到静止就绪(主要是内存资源不足),其他的和三态图的操作一样。
挂起:把该进程从内存中搬到外存上。
激活:又叫唤醒或恢复,操作是一样的,只是叫法不一样而已,该操作是把外存上的某个进程弄到内存上。
为什么要引入挂起和激活操作呢?
1、用户的需要。用户调试一个程序的时候,运行该程序一多半了,但是,忽然发现该程序此时有Bug,用户想停下来修改,但是修改后,用户又不想从头开始运行该程序,此为一因。
2、操作系统的需要。操作系统管理着资源的分配,它无法忍受那些占着资源而不运行的程序,另外,这些进程也会妨碍系统的运行速度,此为一因。等等。