操作系统 - 进程控制块
进程控制块 (PCB) 是一种数据结构,其中包含与进程相关的进程信息。进程控制块也称为进程描述符或任务控制块。不同进程的 PCB 存储在操作系统内核的进程表中。
当创建一个新进程时,操作系统为其初始化一个进程控制块,用于存储与该进程相关的参数值,并跟踪进程状态(即 new、ready、running、waiting 或 terminated)。
PCB 对于进程管理至关重要,几乎所有与进程相关的活动都需要它。许多实用程序(如调度器和资源管理器)会访问和/或更新 PCB。由于 PCB 跟踪进程状态信息,因此在上下文切换中起着关键作用。
进程控制块的结构
进程控制块存储了许多用于高效进程管理的数据项。以下通过图示解释其中一些数据项 −
以下是数据项 −
- 进程编号或 ID − 这显示特定进程的标识号。
- 进程状态 − 这指定进程状态,即 new、ready、running、waiting 或 terminated。
- 程序计数器 − 这包含进程中需要执行的下一条指令的地址。
- 寄存器 − 这指定进程使用的寄存器,包括累加器、索引寄存器、栈指针、通用寄存器等。
- 打开文件列表 − 这些是与进程关联的不同文件。
- CPU 调度信息 − PCB 中包含的 CPU 调度信息包括进程优先级、调度队列指针等,还可能包括其他调度参数。
- 内存管理信息 − 内存管理信息包括根据使用的内存系统而定的页表或段表,还包含基址寄存器、限界寄存器等的数值。
- I/O 状态信息 − 该信息包括进程使用的 I/O 设备列表、文件列表等。
- 计费信息 − 时间限制、帐号、使用的 CPU 量、进程编号等均属于 PCB 的计费信息。
- 进程控制块的位置 − 进程控制块保存在一个防止普通用户访问的内存区域中。这是由于它包含重要的进程信息。有些操作系统将 PCB 放置在进程的内核栈开头,因为这是一个安全位置。
利用 PCB 的进程管理任务
进程控制块(Process Control Blocks)在执行各种进程管理活动时发挥重要作用,因为它们存储了与进程相关的关键信息。以下列出了一些主要操作,在这些操作中,存储在 PCB 中的详细信息会被频繁访问——
上下文切换
在上下文切换期间,当前执行进程的进程状态会被保存到 CPU 寄存器中,并将其副本存储到对应的 PCB 中。下一个被选为执行的进程的状态会从其 PCB 中获取,以便执行。
进程调度
操作系统利用 PCB 中的内容,如进程优先级、进程状态和已使用的资源,从就绪队列中调度进程。通过评估优先级和其他相关信息,调度器确定进程执行的顺序。
多任务处理
借助存储在 PCB 中的信息,如资源分配、进程调度和进程同步,操作系统可以实现多任务处理,同时运行各种进程。
资源共享
存储在 PCB 中的信息包括分配给进程的资源,如打开的文件、共享变量、公共表和内存空间。当新进程请求资源时,OS 会搜索 PCB 中已分配进程,检查这些资源是否可共享,并据此分配资源。因此,PCB 在资源共享中发挥重要作用。