考点三会讲一些零散的知识点:作业管理、文件管理
状态转换图.这个图是我们前面所讲到的这个进程调度的时候就看到过这个图.其实作业在后备状态转入执行状态的时候系统会为作业创建一个作业进程.然后这个作业进程就是按进程的流程进行运行.运行完之后也就是作业终止了.也就进入了作业的完成状态.
作业调度算法.最高响应比优先算法是比较难的.它有可能几种算法结合起来进行应用.
掌握这些算法之前要了解几个基本的运算式.
完成时间-提交时间=周转时间.或者是作业的等待时间+作业的运行时间=作业的周转时间.
来看一个例子:周转时间具体如何来求.
哪一个作业所耗的时间最短,就先运行哪一个作业.从所需的运行时间可以判断得出作业1它的作业是最短的,因为它耗时最短.其次是作业4,消耗时间为3个小时.接下来是作业2,消耗时间5个小时.最后才是作业3,8个小时.所以最短作业优先调度算法就可以确定它的作业优先调度顺序了.
它们提交时间都是0时刻,同时提交的.第1个作业它的开始时间是系统的0时刻,完成时间=开始时间+所需运行时间(小时).
4个作业是同时提交到系统里面来的.最短作业优先调度算法就是短作业先调度.作业1是耗时最短的.最短作业优先调度算法可以确定它的调度顺序了:作业1->作业4->作业2->作业3.等待时间=开始时间-提交时间.由于作业1零时刻提交,零时刻开始运行,所以作业1的等待时间是0.周转时间=完成时间-提交时间.
作业4的开始时间是作业1的完成时间.作业4的完成时间=开始时间+所需运行时间.
作业2的开始时间是作业4的完成时间.上一个作业的完成时间是下一个作业的开始时间.
短作业优先算法是先运行短作业,再运行长作业.
同样的题目,按优先数调度算法
优先数调度算法就要根据这个优先数来进行判别哪一个作业应该先调度,哪一个应该后调度.进程的优先数不同的题目做了不同的规定,有些是大数优先级高,有些是小数优先级高.在这里我们是默认数字越大,它的优先级越高.所以9的优先级是最高的,其次是7,再次是4,最后是1.1的优先级是最低的.以此类推.
确定作业的调度顺序:作业2->作业4->作业1->作业3.
周转时间的另外一个公式:等待时间+运行时间=周转时间.
先来先服务的调度算法:
虽说1、2、3、4四个进程是同时进入的,但是还是有一个先后顺序的,作业1是最先进入的.必须要记住计算方法.
用时间片轮转算法怎么算这个题目呢?前面的进程调度的部分提到了时间片轮转算法这一点.时间片轮转算法首先要了解时间片的大小.比如定义它的时间片大小为一个小时.现实情况下是不可能的,一般一个时间片是微秒或者是毫秒级别的.时间片分的非常非常的小.为了便于计算拟它为一个小时一个时间片.
有一块资源,一小时的时间片.有一个作业队列,作业1、2、、3、4都是等待运行的.把作业1调度进来,让它执行1个小时也就是执行1个时间片.当1小时到达之后我不管作业1是否已经完成都必须要把CPU资源给夺回来.然后又分配了一个时间片,这个时间片也是1小时的,虽然说前1小时是作业1在用CPU这个时间片,但是1小时过后作业1就被踢出CPU.然后再分配一个1小时的时间片给作业2,作业2执行完一个小时的时间片不管它是否已经完成我们都要把作业2的CPU资源剥夺回来,让作业三执行一个小时.接下来又分配一个时间片给作业4使用,作业4用完了以后又回到了作业1,又给作业1一个时间片.
此时,当运行完这一个时间片,作业1已经完成了.接下来是作业2,作业3,作业4.作业1已经完成了就不用再占用CPU资源.再回跳到作业2.老是这样子循环轮转.这样子的算法就称之为时间片的轮转算法.详细的时间片轮转算法的等待时间和周转时间自己计算.
带权作业周转时间
作业2的带权周转时间=作业2的周转时间/作业2所需运行时间(小时).
最高优先比算法.算法比较难,题目也是非常有难度的.
两个作业管理进程的意思:内存当中最多只允许有两个作业处于运行状态.最多只能够有两个.如果有第三个的时候就必须要经过一种什么样的规则进行等待或者轮流使用CPU的资源.因为作业管理进程只有两个.
响应比=周转时间(实际的运行时间)/估计运行时间.这样子我们就能够求出响应比.
当作业进入内存的时候就进入了一个进程调度的一个时刻,进行进程调度的时候我们就要根据这个优先数来决定谁占用CPU资源.由于B的优先数=7>A的优先数=5,所以B先运行.
说明一个概念,进入内存和开始运行有什么区别?它和两个作业管理进程又有什么关联呢?其实如果要变为进程那么它就必须要装入内存.只有两个作业管理进程意味着同一时刻只有两个作业在内存中.
然后这两个作业并不是同时运行的,这两个作业谁先运行谁后运行又要取决于一个因素:谁的优先数大,哪个进程就能够被调度.
所以当B进入的时候内存当中还只有一个A作业,B可以顺利地进入内存.然后就比较优先数,看B的优先数大还是A的优先数大.结果B的优先数=7>A的优先数=5,所以B先运行.作业A开始等待.
A作业等待是一种通俗的说法,如果牵涉到这一个进程的管理,它应该是处于一种就绪的状态.因为作业A它现在已经是一种调度到内存,调度到内存它就创建了作业的进程.现在A此时是一个作业进程,它应该是处于就绪状态.因为它等待的只是CPU资源而已.
10:50 作业发生变化只有两种情况:一种就是现有的作业运行完毕可能引起变化,另外一种就是有新的作业进来它有可能引起变化我们需要分析.其他时刻就不必分析了.就是延续了上一种状态.
10:50的时候C作业到达,但是这个时候内存中已经有两个作业了.所以C无法进入内存.此时内存中还有一个作业A处于一个就绪状态.
11:20,B作业完成了.B作业完成了它就可以释放内存资源也可以释放CPU资源.同时D作业到达.注意这一个时刻处于等待状态的作业有两个.等待进入内存的作业有两个:一个是C作业一个是D作业.是C作业先进去呢还是D作业先进去、先进入内存呢?
C的响应比=1+等待时间/估计运行时间=1+(11:20-10:50)/40=1+30/40=7/4,D的响应比=1+等待时间/估计运行时间=1+(11:20-11:20)/80=1+0/80=1.所以C的响应比>D的响应比.所以C要进入内存.
C进入内存之后我们就要进行另外一个判断了:哪一个进程(A进程还是C进程)的优先数大?优先数大我们就运行它.现在A进程的优先数=5>C进程的优先数=3.所以A开始运行,C等待.
11:40,E作业到达.没有作业现在完成.所以E作业就要进行等待.因为内存当中已经有两个进程了.所以E不能够进入内存.它就必须要等待.这个时候等待进入内存的作业有两个:一个是D作业一个是E作业.
11:50 A作业完成了.现在等待的这两个作业:D作业和E作业,哪个作业的响应比会高一些.响应比高的就进入内存.D的响应比=1+等待时间/估计运行时间=1+(11:50-11:20)/80=1+3/8=11/8.E的响应比=1+等待时间/估计运行时间=1+(11:50-11:40)/30=1+1/3=4/3.D的响应比>E的响应比.所以D进入内存.进入内存之后内存当中就有D和C两个进程.D的优先数=8>C的优先数=3.所以D就直接进入了运行状态.此时内存中C还在等待.
12:00. F作业到达了.内存中也有两个进程,所以F不能够进入内存.它必须要等待.
13:10 D作业完成了.这个时刻E的响应比=1+等待时间/估计运行时间=1+(13:10-11:40)/30=1+90/30=4.F的响应比=1+等待时间/估计运行时间=1+(13:10-12:00)/70=1+70/70=2.这个时候E和F都在等待进入内存的机会.响应比高的就能够进入内存.所以E进入内存.E的优先数=6>C的优先数=3.所以E可以直接运行.C还是等待.C作业进程等待.
13:40 E作业完成.F作业进入内存.因为此时只有一个F作业在等待,所以它就不用进行一些响应比的一个计算了,直接进入内存.由于F的优先数=9>C的优先数=3.所以F开始运行.
14:50 F作业完成.整个内存当中就只有C了.现在没有人跟它抢占资源了,所以它就可以直接开始运行.
15:30 C作业完成.