操作系统原理与设计(4)进程的基本概念和状态转换
本系列笔记整理自 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,用链接字链接成一个队列,如就绪队列、阻塞队列和空白队列等(状态相关见下文)。在一个队列中,进程按照优先级从高到低排列,而这些排列的过程都是通过指针链接形成。

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

二、进程的状态转换
一个进程有三种基本状态,分别是就绪状态、执行状态和阻塞状态。
(1)就绪状态:当进程已经得到除 CPU 以外的所有必要资源后,只要再获得 CPU 便可执行。这时的程序状态就称为就绪状态。
(2)执行状态:进程已获得 CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态;在多处理机系统中,有多个进程处于执行状态。
(3)阻塞状态:原本正在执行的进程因为发生了某些事件导致不得不放弃处理器,暂停执行,这种状态就叫阻塞状态。一些典型的会导致阻塞的事件包括:请求 I/O,申请缓冲空间等等。
一个进程的状态会随着时间而变化,简单来说有以下转换:
