一、进程的状态
1.创建态:进程正在被创建的阶段。此阶段,操作系统会为进程分配资源、初始化PCB。
2.就绪态:进程创建完毕即进入就绪态。此阶段,进程具备已经具备所有运行条件,但是此时CPU比较繁忙,没有空闲时间去运行该进程。
一个操作系统内存中会有很多个处于就绪态的进程,当CPU空闲时,操作系统会选择一个就绪态进程,使其上CPU上运行。
3.运行态:进程正在CPU上运行的阶段。此阶段,CPU会运行进程,执行一系列的指令。
4.阻塞态:进程运行过程中,请求等待某个事件的发生(如:等待某种系统资源的分配,等待某个进程的响应)而无法继续运行下去,下CPU等待的状态即为阻塞态。此时CPU会选择其他处于就绪态的进程上CPU运行。当阻塞态进程等待的事件发生了,该进程会变为就绪态。
例子:进程A处于运行态,CPU执行一系列指令,指令1、指令2、指令3(发出系统调用,请求使用打印机资源),而此时打印机资源正在被其他进程使用中,则进程A需要等待打印机资源的分配,进入阻塞态。此时CPU会选择就绪态进程B上CPU运行,进程B运行结束后CPU再次空闲,选择就绪态进程A运行。
5.终止态:一个进程执行exit系统调用,请求操作系统终止该进程,则进程进入中止态。处于终止态的进程,操作系统会让该进程下CPU,并回收该进程二点内存空间等资源,回收PCB。当终止进程的工作完成后,进程就彻底消失了。
二、进程状态间的转换
注意:运行态回到就绪态有两种方式:
1.运行态——阻塞态——就绪态
2.运行态——就绪态(每个进程行CPU运行都是一个时间片,一个时间片的时间到了,CPU接收到时钟中断信号,该进程就会下CPU,进入就绪态)
三、进程的组织方式 (进程PCB的组织方式)
PCB有两种组织方式:
1.链接方式
操作系统管理一系列的队列,每一个队列中都包含相应状态的进程PCB。
就绪态队列——PCB1——PCB2——PCB3——……(CPU会把优先级高的进程放在队头)
运行态队列——PCB4——PCB5——PCB6——……
阻塞态队列——PCB7——PCB8——PCB9——……(很多操作系统还会根据进程进入阻塞态的不同原因再细分不同的阻塞队列)
2.索引方式
操作系统会给不同状态的进程建立相应的索引表,每个索引表的表向会指向相应的PCB。