HICSC
003 进程管理:进程控制块PCB

孤立的程序是没有办法运行的,而为使程序可以独立运行,甚至并发的执行,需要为其配置进程控制块。进程控制块是进程实体的一部分,是操作系统中最重要的记录型数据结构,其记录了操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息。接下来将从三个方面详细介绍进程控制块。

PCB的作用

前面已经反复说过,PCB最重要的作用就是使程序成为一个能够独立运行的基本单位,一个能与其它进程并发执行的进程。而操作系统也是通过PCB来对并发执行的进程进行控制和管理,例如,下面的这四种情况都需要借助PCB来实现:

可见,在进程的整个生命周期中,操作系统都是通过PCB来对进程进行控制的,PCB也是进程存在的唯一标志。

PCB的结构

在PCB中,主要包含以下四方面的信息。

进程控制符

处理机状态信息

处理机状态信息主要是由处理机的各种寄存器中的内容存在,处理机运行过程中,许多信息都放在寄存器中。当处理机中断时,所有这些信息都必须保存在PCB中,以便重新执行该进程时,能从断点处继续执行。这些寄存器包括:

进程调度信息

在 PCB 中还存放一些与进程调度和进程对换有关的信息,包括:

进程控制信息

进程控制信息,主要包含:

PCB的组织方式

操作系统中含有成百上千个PCB,为了能对它们加以有效的管理,应该用适当的方式将这些 PCB 组织起来。目前常用的组织方式有以下两种。

链接方式

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

PCB链接队列示意图

索引方式

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

其它资料

Linux中进程结构的源码以及简单介绍可以参考:Processes in Linux,对大家理解PCB的结构有帮助。

如果链接已失效或者不能访问,可下载备用的PDF:Processes_in_Linux.pdf

Comments

Post a Message

人生在世,错别字在所难免,无需纠正。

提交评论