进程控制块(PCB)是系统为了管理进程设置的一个专门的数据结构。系统用它来记录进程的外部特征,描述进程的运动变化过程。同时,系统可以利用PCB来控制和管理进程,所以说,PCB(进程控制块)是系统感知进程存在的唯一标志。
存储的信息:
1.进程id。系统中每个进程有唯一的id,在c语言中用pid_t类型表示,其实就是一个非负整数。 2.进程的状态,有就绪,运行,挂起,停止等状态 3.进程切换时需要保存和恢复的一些CPU寄存器 4.描述虚拟地址空间的信息。 5,描述控制终端的信息。 6.当前工作目录(Current Working Directory) 7.umask掩码 8.文件描述符表,包含很多指向结构体的指针 9.和信号相关的信息 10.用户id和组id。 11.会话(Session)和进程组 12.进程可以使用的资源上限(Resource Limit)
进程控制块包含三类信息 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.根据被选中进程的信息来恢复处理器现场。