参考:
https://www.jianshu.com/p/1e7397b4d80a
https://blog.youkuaiyun.com/IT_10/article/details/89819138
https://www.cnblogs.com/cjdty/p/10911490.html
进程控制块,Process Control Block, PCB。
操作系统管理控制进程运行的信息集合,操作系统用 PCB 来描述进程的基本情况以及运行变化的过程,PCB 是进程存在的唯一标志。
进程的创建:为进程创建 PCB。
进程的终止:回收其 PCB。
进程的组织管理:通过对 PCB 的组织管理实现。
进程控制块中的信息
1) 进程标识符
(1) 内部标识符
操作系统为每一个进程赋予的唯一数字标识符,系统使用。
(2) 外部标识符
由创建者提供,通常由字母与数字组成,往往是由用户(进程)在访问该进程时使用。
描述进程的家族关系,设置父进程标识及子进程标识,还可设置用户标识,以指示拥有该进程的用户。
2) 处理机状态信息
主要是由处理机的各种寄存器中的内容组成的,处理机被中断时,所有这些信息都必须保存在 PCB 中,以便在该进程重新执行时,能从断点继续执行。
通用寄存器、程序计数器 PC、程序状态字PSW。
栈指针:过程调用 / 系统调用 / 终端处理和返回时需要用到。
3) 进程调度信息
进程状态。
进程优先级。
进程调度所需的其它信息:与进程调度算法有关事件,指进程由执行状态转变为阻塞状态所等待发生的事件,即阻塞原因。
4) 进程控制信息
程序和数据的地址。
进程同步和通信机制。为支持进程通信与通信相关的各种标志、信号、信件等,这些信息存在接收方的进程控制块中。
资源清单:除 CPU 以外的、进程所需的全部资源及已经分配到该进程的资源,如打开的文件等。
链接指针:本进程所在队列中的下一个进程的 PCB 的首地址。
作用
PCB 可以被操作系统中的多个模块读或修改,如被调度程序、资源分配程序、中断处理程序以及监督和分析程序等读或修改。
OS 是根据 PCB 来对并发执行的进程进行控制和管理。
PCB 是操作系统中最重要的记录型数据结构。
Linux 系统中用 task_struct 数据结构。
1、作为独立运行基本单位的标志。
2、能实现间断性运行方式。
3、提供进程管理所需要的信息。
4、提供进程调度所需要的信息。
5、实现与其他进程的同步与通信。
组织方式
PCB 通常是系统内存占用区中的一个连续存储区。
线性方式
把所有 PCB 组织在一张线性表中,将该表的首地址存放在内存的一个专用区域中,每次查找时需要扫描全表。
适用于系统中进程数目不多的情况。
链表
把具有同一状态的 PCB,用其中的链接字链接成一个队列。
索引
各个索引表在内存单元中的首地址记录在内存中的专用单元中。添加索引表的方式记录具有相应状态下的某个 PCB 在 PCB 表中的地址。