可剥夺方式优先级的进程调度方案也就是说一个进程的CPU资源是可以被剥夺的.例如一个进程P3它正在使用CPU资源,但现在有一个优先级比它更高的进程P1来了,P1也需要CPU资源,这个时候系统就会将CPUD的资源从P3手上剥夺回来然后分配给P1.
其实这种情况在我们以前讲到进程状态的变换的时候就提到了,也就是一个进程从运行态到了就绪态,是因为它的CPU资源被系统剥夺了,所以它就从运行状态到了就绪状态.
所有进程可以并行使用I/O设备.以前有些考题它的I/O设备是独享设备,不能被所有进程并行使用,不是共享设备.I/O设备是否可以共享这与解题息息相关,非常重要.
CPU的利用率=CPU的使用时间/完成所有进程所花时间
CPU的使用时间是比较好计算的,因为同一时刻,只有一个CPU,所以CPU同一时刻只能为一个进程所使用.
CPU的总使用时间=10ms+10ms+30ms+40ms=90ms.
设备的使用时间不能以简单的这种加来计算了.因为所有进程可以并行使用I/O设备.也就是说R1(30ms)和R1(20ms)它有可能有重叠的部分,重叠的部分我们就不能够重复计算它的时间.
同样进程组的全部完成时间也不能够从这个表直观地体现出来.
解题方法:画一个设备和CPU的一个使用时间的一个表格.设备占用时间的一个进度表:
P3前40ms要使用CPU,但是我们要注意的一点就是P3的优先级是最低的.也就是说它现在要使用CPU,系统不一定给CPU给它使用.什么情况下可以给CPU它使用呢?就是P1和P2都不使用CPU的时候,P3就可以使用CPU了.
比如P1前30ms都不要使用CPU,P2前20ms不要使用CPU,20-30ms之间它要使用CPU.所以P3前20ms,就是P1和P2都没有使用CPU的时候,P3能够使用CPU.到第20ms过后,P2要使用CPU了,所以P3必须要把它的CPU资源出让给P2.
第30ms-60ms,P3处于就绪状态,第30-40ms,P2处于就绪状态,因为它们都是在等CPU资源.
所以P1、P2、P3的进程组运行完毕需要100ms.
只要会画出这个时间进度表,那么解题就没问题了.
例题2:
讲银行家算法的时候举了一个比较复杂的例子:
这个例子比上一个更简单,因为这个例子只牵涉到了一类资源,而我们讲课的时候讲到了三类资源.是否真正理解了银行家算法.
如果没说它是互斥的还是共享的资源,那么它就是互斥的资源.也就是说这个资源是不能够共享的.