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

1.进程的状态

三种基本状态:运行态,就绪态,阻塞态。

1.运行状态

如果一个进程此时在CPU上运行,那么这个进程处于“运行态”。
CPU会执行该进程对应的程序(执行指令序列)

2.就绪状态

当进程创建完成后,便进入“就绪态”,
处于就绪态的进程已经具备运行条件(其他所需资源),
但由于没有空闲CPU,就暂时不能运行.

3.阻塞状态(又称等待态)

在进程运行的过程中,可能会请求等待某个事件的发生(如等待某种系统资源的分配,或者等待其他进程的响应)。

在这个事件发生之前,进程无法继续往下执行,
此时操作系统会让这个进程下CPU,并让它进入“阻塞态
当CPU空闲时,又会选择另一个“就绪态”进程上CPU运行.

4.创建状态(又称新建态)

进程正在被创建时,它的状态是“创建态”,
在这个阶段操作系统会为进程分配资源、初始化PCB.

5.终止状态(又称结束态)

一个进程可以执行exit系统调用,请求操作系统终止该进程。

此时该进程会进入“终止态”,操作系统会让该进程下CPU, 并回收内存空间等资源,最后还要回收该进程的PCB。
当终止进程的工作完成之后,这个进程就彻底消失了。

2. 状态之间的转换

进程的状态与转换以及组织方式_第1张图片

1.就绪态—>运行态

进程被调度。

2.运行态—>就绪态

时间片到,或处理机被抢占。

3.运行态—>阻塞态

进程使用“系统调用”的方式申请某种系统资源,或者请求等待某个事件发生。(主动行为)

4.阻塞态—>就绪态

申请的资源被分配,或者等待的事件发生。(不是进程自身能控制的,是一种被动行为)(被动行为)

注意:不能由阻塞态直接转换为运行态,也不能由就绪态直接转换为阻塞态(因为进入阻塞态是进程主动请求的,必然需要进程在运行时才能发出这种请求)

3.进程的组织方式

(各个进程PCB的组织方式)

进程PCB中,会有一个变量state来表示进程的当前状态。
如:1表示创建态、2表示就绪态、3表示运行态.
为了对同一个状态下的各个进程进行统一的管理,操作系统会将各个进程的PCB组织起来。

1.链式方式
  1. 按照进程状态将PCB分为多个队列
  2. 操作系统持有指向各个队列的指针
    进程的状态与转换以及组织方式_第2张图片
  • 执行指针:指向当前处于运行态(执行态)的进程。单CPU计算机中,同一时刻只会,有一个进程处于运行态
  • 就绪队列指针:指向当前处于就绪态的进程。通常会把优先级高的进程放在队头
  • 阻塞队列指针:指向当前处于阻塞态的进程。很多操作系统还会根据阻塞原因不同,再分为多个阻塞队列
2.索引方式
  1. 根据进程状态的不同,建立几张索引表
  2. 操作系统持有指向各个索引表的指针

进程的状态与转换以及组织方式_第3张图片
大多数的操作系统基本都采用的链式方式。

你可能感兴趣的:(操作系统,数据库,开发语言)