1. 进程的概念

  • 程序是静态的,就是存放在磁盘里的可执行文件,一系列的指令集合
  • 进程是动态的,是程序的一次执行过程

2. 进程的组成

程序段、数据段、PCB三部分组成了进程实体,引入进程实体的概后,可以把进程定义为:进程是进程实体的与运行过程,是系统进行资源分配和调度的一个独立单位。

2.1 PCB

  • 当进程被创建时,OS会为该进程分配一个唯一不重复的编号PID
  • 进程所属用户ID(UID)
  • 分配了哪些资源
  • 进程的运行情况
  • 处理机相关信息
  • 这些信息都被保存在PCB中,PCB是进程存在的唯一标志,当进程被创建时,OS为其创建PCB;当进程结束时,会回收PCB

2.2 程序段

  • 程序段:包含程序指令

2.3 数据段

  • 数据段:包含运行过程中产生的各种数据

3. 进程的特征

  • 动态性
  • 并发性
  • 独立性
  • 异步性
  • 结构性

4. 五状态模型

4.1 创建态(New)

进程正在被创建时的状态,在这个阶段OS会为进程分配资源,初始化PCB

4.2 就绪态(Ready)

进程创建完成后便进入就绪态,此时进程已经具备运行条件,但是由于没有空闲CPU,就暂时不能运行。一个系统中可能有很多处于就绪态中的进程

4.3 运行态(Running)

一个进程在CPU上运行,那么这个进程处于运行态,CPU会执行该进程对应的程序(执行指令序列)。单CPU情况下,同一时刻只会有一个进程处于运行态,多核CPU情况下可能有多个进程处于运行态

4.4 阻塞态(Waiting/Blocked)

在进程运行的过程中,可能会请求等待某个事件的发生,在这个事件发生之前,进程无法继续往下执行,此时操作系统会让这个进程下CPU,进入阻塞态,当CPU空闲时,就又会选择另一个就绪态进程上CPU运行

4.5 终止态(Terminated)

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

进程状态的转换过程如下图所示:

Fig 1. 进程状态的转换

可见,运行态到阻塞态是进程自身主动做出的行为,阻塞态到就绪态不是进程自身控制的,是一种被动行为。不能直接从阻塞态到运行态,也不能直接从运行态到阻塞态,都要经过就绪态这一中间状态。

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

5. 进程的组织

5.1 链接方式

Fig 2. 链接方式组织PCB

5.2 索引方式

Fig 3. 索引方式组织PCB