本系列笔记整理自 https://www.bilibili.com/video/BV1YE411D7nH

个人认为讲解比较清晰,容易理解。

一、进程的基本概念

在多道程序环境下,允许多个程序并发运行。正是因为并发执行的特征,导致了在操作系统中引入进程的概念。

1.1 进程的特征

1)结构特征

并发执行的程序失去了封闭性,导致不可再现,因此一般的程序是不能并发执行的。为了让程序能独立运行,需要为之配置一进程控制块,即 PCB;而由程序段、相关数据段和 PCB 三部分便构成了进程实体。

在很多时候所说的进程,实质上是指进程实体。比如说,创建进程指的是创建进程实体中的 PCB;撤销进程指的是撤销进程的 PCB。

2)动态性

进程的实质是进程实体的一次执行过程。我们可以认为程序是静态的,只不过是一系列指令的集合;进程是动态的,是程序的一次执行过程(同一程序多次执行会对应多个进程)。换言之,进程实体是有一定的生命期的!

3)并发性

这个特征比较容易理解,毕竟我们说过发明进程这个概念就是为了使程序可以并发执行。

4)独立性

在一开始的操作系统中,独立性指的是进程实体是一个独立运行、分配资源和接受调度的基本单位。只有建立了 PCB 的程序才能作为独立单位运行。

5)异步性

这与之前提到的操作系统的异步特征类似。指的是进程可以按照各自独立、不可预知的速度向前推进。

1.2 进程控制块(PCB)

上文已经提到进程控制块(PCB)是进程实体的一部分,是操作系统中最重要的记录型数据结构。PCB 中记录了操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息。换言之,操作系统就是根据 PCB 中的信息来对并发执行的进程进行控制和管理的。

1.2.1 进程控制块中的信息

在进程控制块中,主要包括下面四方面的信息:

1)进程标识符

进程标识符用于唯一地标识一个进程。一个进程通常有两种标识符:(1)内部标识符,这是操作系统自动为每一个进程赋予的惟一数字标识符,通常是一个进程的序号,方标系统调用。(2)外部标识符,这由创建者提供,用于用户进程访问时使用。

2)处理机状态

处理机状态信息主要是由处理机中的各种寄存器中的内容组成。这些寄存器包括:通用寄存器,这是用户程序可以访问的;指令计数器,保存了下一条指令的地址;程序状态字 PSW,包含了状态信息,如条件码、执行方式、中断屏蔽标志等;用户栈指针,每个用户进程都有一个或若干个与之相关的系统栈,用于存放过程和系统调用参数及调用地址,栈指针指向该栈的栈顶 。

3)进程调度信息

进程调度信息包括进程状态、进程优先级、阻塞原因以及其它一些和进程调度有关的信息。

4)进程控制信息

进程控制信息包括程序和数据的地址;进程同步和通信机制,指实现进程同步和通信所必需的机制;资源清单,进程所需的所有资源;链接指针,它给出了本进程所有队列中的下一个进程的 PCB 的首地址。

1.2.2 进程控制块的组织方式

1)链接方式

这是把处于同一状态的 PCB,用链接字链接成一个队列,如就绪队列、阻塞队列和空白队列等(状态相关见下文)。在一个队列中,进程按照优先级从高到低排列,而这些排列的过程都是通过指针链接形成。

OS

2)索引方式

系统根据所有进程的状态建立索引表,如就绪索引表、阻塞索引表等。把各索引表在内存的首地址记录在内存的专用单元中。表目中记录相应状态的 PCB 在 PCB 表中的地址。

OS

二、进程的状态转换

一个进程有三种基本状态,分别是就绪状态、执行状态和阻塞状态。

(1)就绪状态:当进程已经得到除 CPU 以外的所有必要资源后,只要再获得 CPU 便可执行。这时的程序状态就称为就绪状态。

(2)执行状态:进程已获得 CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态;在多处理机系统中,有多个进程处于执行状态。

(3)阻塞状态:原本正在执行的进程因为发生了某些事件导致不得不放弃处理器,暂停执行,这种状态就叫阻塞状态。一些典型的会导致阻塞的事件包括:请求 I/O,申请缓冲空间等等。

一个进程的状态会随着时间而变化,简单来说有以下转换:

OS