进程控制块(PCB)是系统为了管理进程设置的一个专门的
数据结构。系统用它来记录进程的外部特征,描述进程的运动变化过程。同时,
系统可以利用PCB来控制和管理进程,所以说,PCB(进程控制块)是系统感知进程存在的唯一标志。
什么是数据结构:
数据结构是
计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的
数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储
效率。数据结构往往同高效的检索
算法和
索引技术有关。
进程控制块包含三类信息
1.标识信息。用于唯一地标识一个进程,常常分由用户使用的外部标识符和被系统使用的内部标识号。几乎所有
操作系统中进程都被赋予一个唯一的、内部使用的数值型的进程号,
操作系统的其他控制表可以通过进程号来
交叉引用进程控制表。常用的标识信息包括
进程标识符、父进程的标识符、用户进程名、用户组名等。
2.现场信息。用于保留一个进程在运行时存放在处理器现场中的各种信息,任何一个进程在让出处理器时必须把此时的处理器现场信息保存到进程控制块中,而当该进程重新恢复运行时也应恢复处理器现场。常用的现场信息包括通用
寄存器的内容、控制寄存器(如PSW寄存器)的内容、用户堆战指针、系统堆饺指针等。
3.控制信息。用于管理和调度一个进程。常用的控制信息包括:l)进程的调度相关信息,如
进程状态、等待事件和等待原因、进程优先级、队列指引元等2)进程组成信息,如正文段指针、数据段指针:引进程间通信相关信息,如消息队列指针、信号量等互斥和同步机制4)进程在辅存储器内的地址5)CPU资源的占用和使用信息,如时间片余量、进程己占用CPU的时间、进程己执行的时间总和,记账信息6)进程特权信息,如在内存访问和处理器状态方面的特权7)资源清单,包括进程所需全部资源、已经分得的资源,如主存资源、I/0设备、打开文件表等。
●队列:把处于同一状态(例如就绪态)的所有进程控制块链接在一起,这样的数据结构称为进程队列(Process Queues)。
●进程的创建来源于以下四个事件:
1.提交一个批处理作业。
2.在终端上交互式的登录。
3.
操作系统创建一个服务进程。
4.存在的进程孵化(spawn)新的进程。
●进程的创建过程如下描述:
1.在主进程表中增加一项,并从PCB池中取一个空白PCB。
2.为新进程的进程映像中的所有成分分配地址空间。对于进程孵化操作还需要传递环境变量,构造共享地址空间。
3.为新进程分配资源,除内存空间外,还有其它各种资源。
4.查找
辅助存储器,找到进程正文段并装入到正文区。
5.初始化进程控制块,为新进程分配一个唯一的进程标识符,初始化PSW。
6.把进程加入某一就绪进程队列,或直接将进程投入运行。
7.通知操作系统的某些模块,如记账程序、性能监控程序。
●
进程切换的步骤
1.保存被中断进程的处理器现场信息。
2.修改被中断进程的进程控制块的有关信息,如
进程状态等。
3.把被中断进程的进程控制块加入有关队列。
4.选择下一个占有处理器运行的进程。
5.修改被选中进程的进程控制块的有关信息。
6.根据被选中进程设置操作系统用到的地址转换和存储保护信息。
7.根据被选中进程的信息来恢复处理器现场。