进程和程序的区别和联系1进程是程序的一次运行活动,属于一种动态的概念。2一个进程可以执行一个或几个程序。3程序可以作为一种软件资源长期保存着。
进程通常由3部分组成,1程序,他描述了进程所要完成的功能。2数据集合,3进程控制块(PCB),他包含了进程的描述信息和控制信息,是进程动态特性的集中反映。不存在完全独立的进程
进程的状态1执行状态 2就绪状态 3封锁状态
进程通讯: 同步 进程运行到某一点时,除非第一个进程已经完成某些操作,否则就不得不停下来等待 异步 进程间竞争共享共有资源而引起的见解制约关系
一次仅允许一个进程使用的资源称为临界资源
在UNIX中有一个进程比较特殊,就是
系统调度进程,因为其进程编号(标识数)为0,所以也称其为0#进程。该进程只在核心态下运行,也就是说,他是唯一的只运行操作系统程序的一个进程
常驻内存部分包括进程基本控制块PROC以及进程共享正文段的控制信息块。非常驻内存部分包括进程控制块USER结构,核心栈,用户栈。
顺序规定为先进程USER结构,核心栈,然后数据段,用户栈。进程USER结构和核心栈合并起来称为进程的PPDA区
进程基本控制块是PROC型的数据结构 进程调度状态p-stat表示一个进程是否正在使用或能否占用处理机。有6种 SSLEEP 1高优先睡眠 SWAIT 2低优先睡眠 SRUN 3
p-pri进程优先数,值越小优先权越高。数值范围-100~127
进程扩充控制块是USER型数据结构
现代
计算机系统一个重要特点是并发,而实施并发的基础是由软,硬件结合组成的中断机构
通常CPU在执行完一条指令后,立即检查有无适宜的需要立即处理的中断要求。有,则立即对次作出响应。中断响应后,处理过程大致分4个阶段: 1保护断点现场 2查找,识别中断源 3执行中断处理子程序 4恢复现场和退出中断
CPU密集型进程优先权低于IO密集型进程,系统进程的优先权高于用户进程,从睡眠状态苏醒的就绪进程,优先权高于一般就绪进程
处理机运行状态,若现行状态为用户态,则先前也设置为用户态;若现行运行状态为核心态,则先前状态可为用户态或核心态。 处理机优先级分成8级,如果处理机优先级高于或等于总线请求级,则不批准总线请求。
进程正在或即将转入用户态下运行时,用计算方式确定其优先数。对于一般用户进程而言,用计算方式获得的优先数是大于用设置方式获得的优先数。算式是p-pri=min{127,(p-cpu/16+PUSER+p-nice)} 在2者之中取最小值
计算进程优先数的时机 1在时钟中断处理程序中,一般每隔一秒,对所有优先数大于PUSER的进程复算优先数。这种频繁计算能比较及时地反映进程优先数的变化,但系统开销比较大 2现运行进程在陷入处理子程序trap(dev,sp...)末尾重新计算自己的进程优先数 3现运行进程在执行时钟中断处理程序时,若发现中断前为用户态,则每隔一秒重新计算本进程的优先数
进程切换调度的条件和时机1现运行进程本身不再具备条件继续占用处理机,于是调用进程切换调度程序自动放弃处理机 2在系统中可能存在一个或几个较现运行进程更适宜于占用处理机的进程,于是系统强迫现运行进程放弃处理机。
创建新进程的基本任务是为新进程创造一个图象,包括PROC,PPDA区,共享正文段,用户态数据和栈段。
创建新进程基本方式1首先为子进程分配一空闲PROC结构,并填入各种初值2如果父进程图象包括共享正文段,则父,子进程执行的代码都预先安排在该正文段中 3父,子进程的PPDA区,用户态数据段和栈段是各自独用的,他们应该占用不同的存储区。
除0#进程外,进程都由程序NEWPROC创建
自由BUF队列,一个可被分配作它用的缓冲存储区,其相应BUF位于自由BUF队列。 设备BUF队列,每类块设备都有一个设备BUF队列,其队首和队尾分别由相应诶表中的B-FORW和B-BACK指示
IO请求队列是个先进先出FIFO队列
索引结构,能够随机访问其文件的任何一部分,为此,可将逻辑文件顺序划分成长度与物理存储块长度相同的逻辑块,然后为每个文件分别建立逻辑块号与物理块号对照表。这张表称为该文件的索引表。用这种方法构造的文件称为索引文件。索引文件占2个区,索引区存放索引表,数据取存放文件实体信息。索引结构的优点是只要给出文件和在索引表中的位移量,就能随机存取文件中的任何一块。代价是要在文件中间增,删物理块时,要对索引表中后续项作移位操作,非常耗时