操作系统(八)进程状态的转换以及进程组织方式

2.1.2 进程状态的转换以及进程组织方式

目录

2.1.2 进程状态的转换以及进程组织方式

2.1.2.1 进程的状态

2.1.2.2 进程的组织方式


2.1.2.1 进程的状态

  因为进程的执行在时间上是不连贯的,所以进程就会有多种状态,其中就绪态、执行态、阻塞态是三种最基本的状态。除此之外进程还可能会有创建态以及终止态。

(1)创建态:在进程被创建时他的状态是创建态,这个时候操作系统为进程分配了一些资源,初始化了PCB。但是因为资源不完整所以还不能运行。

(2)就绪态(Ready):创建态结束后,进程便进入“就绪态”,处于就绪态的进程已经具备运行条件,但由于没有空闲CPU,就暂时不能运行。

(3)执行态:当CPU空闲时,他会在就绪队列中选择一个就绪态的进程让他上处理机运行,这时程序就进入了执行态。

(4)阻塞态:正在执行的进程可能会遇到一些事件(请求IO,申请缓存空间等)而无法继续执行下去,此时进程进入了阻塞态,这个时候CPU会让这个进程下处理机并运行另一个处于就绪态的进程。

(5)终止态:一个进程可以执行 exit 系统调用,请求操作系统终止该进程。此时该进程会进入“终止态”,操作系统会让该进程下CPU,并回收内存空间等资源,最后还要回收该进程的PCB。当终止进程的工作完成之后,这个进程就彻底消失了。

  下面用一张图说明这几种状态之间的转化情况:

操作系统(八)进程状态的转换以及进程组织方式

  这里我们需要注意一下:就绪态没有办法变为阻塞态,阻塞态也没有办法变为执行态,因为阻塞态是主动请求发生的,必须要进程在运行中才能发出这种请求。

2.1.2.2 进程的组织方式

 进程PCB中,会有一个变量 state 来表示进程的当前状态。如:1表示创建态、2表示就绪态、3表示运行态…为了对同一个状态下的各个进程进行统一的管理,操作系统会将各个进程的PCB组织起来。主要的进程组织方式有链接方式以及索引方式两种。

  链接方式这是把具有同一状态的 PCB,用其中的链接字链接成一个队列。这样,可以形成绪队列、若干个阻塞队列和空白队列等。对其中的就绪队列常按进程优先级的高低排列,把优先级高的进程的 PCB 排在队列前面。此外,也可根据阻塞原因的不同而把处于阻塞状态的进程的 PCB 排成等待 I/O 操作完成的队列和等待分配内存的队列等。

        操作系统(八)进程状态的转换以及进程组织方式

  索引方式:系统根据所有进程的状态建立几张索引表。例如,就绪索引表、阻塞索引表等,并把各索引表在内存的首地址记录在内存的一些专用单元中。在每个索引表的表目中,记录具有相应状态的某个 PCB 在 PCB 表中的地址。

                  操作系统(八)进程状态的转换以及进程组织方式