进程的状态模型有三种,从最简单的说起,方便理解。重点是哪些状态可以经由哪些状态到达,以及三种模型之间多了什么状态
三状态进程模型
- 运行态:进程正在运行,进程除了获得CPU之外还获得其他资源。
- 就绪态:进程等待运行,进程除了没有获得CPU之外,其他资源都获取了。
- 阻塞态:进程发生阻塞,进程不管CPU是否获得,但其他资源没有获得,导致不具备运行条件发生阻塞
五进程状态
在三态模型的基础上增加了新建态(new)和终止态(exit)
- 新建态:对应于进程被创建时的状态,尚未进入就绪队列。 创建一个进程需要通过两个步骤: 1.为新进程分配所需要的资源和建立必要的管理信息。 2.设置该进程为就绪态,并等待被调度执行。
- 终止态:指进程完成任务到达正常结束点,或出现无法克服的错误而异常终止,或被操作系统及有终止权的进程所终止时所处的状态。 处于终止态的进程不再被调度执行,下一步将被系统撤销,最终从系统中消失。 终止一个进程需要两个步骤: 1.先等待操作系统或相关的进程进行善后处理(如抽取信息)。 2.然后回收占用的资源并被系统删除。
进程状态的转换如下:
-
新建状态(New) -> 就绪状态(Ready):当进程被创建后,它会进入就绪状态,等待CPU资源。
-
就绪状态(Ready) -> 运行状态(Running):当CPU资源可用时,操作系统会将一个就绪状态的进程调度到CPU上运行。
-
运行状态(Running) -> 就绪状态(Ready):当进程的CPU时间片用完或者进程主动释放CPU时,进程会回到就绪状态,等待下一次CPU调度。
-
运行状态(Running) -> 阻塞状态(Blocked):当进程需要等待某个事件完成时,进程会进入阻塞状态,等待事件完成。
-
阻塞状态(Blocked) -> 就绪状态(Ready):当进程所等待的事件完成后,它会回到就绪状态,等待CPU调度。
-
运行状态(Running) -> 终止状态(Terminated):当进程完成了它的任务,或者被操作系统终止时,它会进入终止状态。
有些状态无法达到,比如说一个已经处于终止状态的进程无法回到就绪状态或者运行状态,因为它已经完成了它的任务,不再需要占用CPU资源。同样,一个进程如果没有被创建,也就无法处于其他任何状态。
七进程状态
七态模型在五态模型的基础上增加了就绪挂起态(ready suspend),阻塞挂起态(blocked suspend)
- 就绪挂起态 / 挂起就绪态:进程具备运行条件,但目前在外存中,只有它被对换到内存才能被调度执行。
- 阻塞挂起态 / 挂起等待态:表明进程正在等待某一个事件发生且在外存中。