在创建进程时, 操作系统执行多项操作。为了标识进程, 它为每个进程分配一个进程标识号(PID)。由于操作系统支持多重编程, 因此需要跟踪所有进程。对于此任务, 进程控制块(PCB)用于跟踪进程的执行状态。每个内存块包含有关进程状态, 程序计数器, 堆栈指针, 打开的文件的状态, 调度算法等的信息。所有这些信息都是必需的, 并且当进程从一种状态切换到另一种状态时必须将其保存。当进程从一种状态转换为另一种状态时, 操作系统必须更新进程PCB中的信息。
进程控制块(PCB)包含有关进程的信息, 即寄存器, 量子, 优先级等。进程表是PCB的阵列, 这意味着在逻辑上包含系统中所有当前进程的PCB。
![进程表和进程控制块(PCB)1](https://www.lsbin.com/wp-content/uploads/2021/04/process-table.jpg)
- 指针–它是一个堆栈指针, 当进程从一种状态切换到另一种状态时, 需要保留该指针以保持进程的当前位置。
- 进程状态–它存储进程的相应状态。
- 进程号–每个进程都分配有一个唯一的ID, 称为进程ID或PID, 用于存储进程标识符。
- 程序计数器 -它存储计数器, 该计数器包含要为该进程执行的下一条指令的地址。
- 注册–这些是CPU寄存器, 其中包括:累加器, 基址寄存器和通用寄存器。
- 内存限制–该字段包含有关操作系统使用的内存管理系统的信息。这可能包括页表, 段表等。
- 打开文件列表–此信息包括为进程打开的文件列表。
杂项会计和状态数据–
该字段包括有关使用的CPU数量, 时间限制, 作业或进程号等信息。
当其被阻止运行时, 进程控制块存储寄存器内容, 也称为处理器的执行内容。这种执行内容体系结构使操作系统能够在进程返回运行状态时还原其执行上下文。当进程从一种状态转换为另一种状态时, 操作系统会在进程的PCB中更新其信息。操作系统在进程表中维护指向每个进程PCB的指针, 以便它可以快速访问PCB。
![进程表和进程控制块(PCB)2](https://www.lsbin.com/wp-content/uploads/2021/04/process-control-block.jpg)