1.Unix为了节省PCB所占主存,PCB分为2部分:
a.常驻内存部分:Proc结构。包含进程调度所必需的信息;
proc结构包含了以下主要几方面的内容:
标识(identification):每个进程有一个唯一的进程ID(PID),属于特定的某进程组。
较新版本的UNIX还会给每个进程分配一个会话ID(session ID)。
与该进程u区映射的内核地址映射表(kernel address map)的位置。
当前进程状态。
前向指针和后向指针,将进程链接到调度队列,或将阻塞的进程链接到睡眠队列。
b.非常驻内存部分:User结构。包含进程运行时才要用到的更多其他信息,它随着用户程序和数据部分换进/换出主存;
c.User区的字段只能由正在运行的进程cun去。即只有占用CPU的进程才能访问属于当前进程的私有User区。
2.整个系统能够有一个进程表,称为Proc数组。Unix系统最多有50个进程;
3.每一个进程有专用的User区,但是核心根据进程页表,通过地址映射机构,可以访问当前进程的User区(好像系统中仅有一个User区)
进程执行过程》
执行一个PE文件,操作系统会为它创建一个4G(32位)大小的虚拟存储空间,然后填写PCB进程控制块有关该进程的信息,而在进程控制块中,有一部分(proc)会常驻在内存中,其余保存在磁盘中,等到需要使用时,通过内存映射表,把磁盘上的内容拷贝到主存中。当进程处于休眠状态,被cpu调起时,cpu通过读取常驻内存的proc结构内的内容,获取该进程的上下文,上次运行的状态 关键字 : MMU ,PE,PCB,PROC
进程控制块包含三类信息 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.根据被选中进程的信息来恢复处理器现场。