1.Unix为了节省PCB所占主存,PCB分为2部分:数组
a.常驻内存部分:Proc结构。包含进程调度所必需的信息;session
proc结构包含了如下主要几方面的内容:数据结构
标识(identification):每一个进程有一个惟一的进程ID(PID),属于特定的某进程组。ide
较新版本的UNIX还会给每一个进程分配一个会话ID(session ID)。性能
与该进程u区映射的内核地址映射表(kernel address map)的位置。spa
当前进程状态。操作系统
前向指针和后向指针,将进程连接到调度队列,或将阻塞的进程连接到睡眠队列。指针
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.根据被选中进程的信息来恢复处理器现场。