习题解答——第4章调度与死锁
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章调度与死锁思考与练习题
2.考虑下面的进程集合:
(1)
(2)
分别对以上两个进程集合,计算使用先来先服务(FCFS)、时间片轮转法(时间片q=1)、短进程优先(SPN)、最短剩余时间优先(SRT,时间片q=1)、响应比高者优先(HRRN)及多级反馈队列(MFQ,第1个队列的时间片为1,第i(i<1)个队列的时间片q=2(i-1))算法进行CPU调度,请给出各进程的完成时间、周转时间、带权周转时间,及所有进程的平均周转时间和平均带权周转时间。
解答:
(1)
平均带权周转时间W=(1+1.4+3.5+1.2+1.6)/5=8.7/5=1.74
平均带权周转时间W= (2+2.5+2+1.8+1.6)/5=9.4/5=1.98
平均带权周转时间W=(1+1.8+1+1.2+1.6)/5=6.6/5=1.32
平均带权周转时间W=(1+1.8+1+1.2+1.6)/5=6.6/5=1.32
平均带权周转时间W=(1+1.4+3.5+1.2+1.6)/5=8.7/5=1.74
多级反馈队列:第1个队列的时间片为1,第i(i<1)个队列的时间片q=2(i-1))即:
平均带权周转时间W= (1.33+2.5+1.8+1.8+1.6)/5=9.03/5=1.806
(2)
平均带权周转时间W=(1+1+9+1.89)/4=3.22
平均带权周转时间W=(1+1.89+1+1.89)/4=1.45
平均带权周转时间W=3.22
平均带权周转时间W=1.25
平均带权周转时间W=3.22
平均带权周转时间W=1.445
3.考虑系统中出现的情况:
(1)计算每个进程还可能需要的资源,并填入表的“仍然需要”栏目中。
(2)系统当前是否处于安全状态?为什么?
(3)系统当前是否死锁?为什么?
(4)如果进程P3又有新的请求(0,2,0,0),系统是否可以安全地接受此请求?解答:
存在安全序列
(3)不会发生死锁,因为存在安全序列,进程按此顺序执行可保证不死锁。
(4)不可以接受新的请求,因为系统可用资源不足。(R2只有1个,而新请求P3需要2个)。4.考虑有一个共有150个存储单元的系统,已经如下分配给三个进程:
试确定下面新的请求是否安全。如果安全,请给出安全序列。
(1)第4个进程到达,它最多需要60个存储单元,最初需要25个单元。
(2)第4个进程到达,它最多需要60个存储单元,最初需要35个单元。
解答:
15.(1)
(2
5.有3个进程共享4个资源,一次只能请求或释放一个资源,每个进程最大需要2个资源,试说明系统不会发生死锁。
解答:
根据抽屉原理,3个进程分4个资源,总有1个进程得到2个资源,该进程将满足最大需求而运行完毕,它释放资源后,系统中剩余2个进程享用4个资源,这2个进程也将满足最大需求,所以系统不会发生死锁。
6.N个进程共享M个资源,一次只能请求或释放一个资源,每个进程最大需要资源数不超过M,并且所有进程最大需求的总和小于(M+N),试说明系统不会发生死锁。
解答:方法一:
根据抽屉原理,3个进程分4个资源,总有1个进程得到2个资源,该进程将满足最大需求而运行完毕,它释放资源后,系统中剩余2个进程享用4个资源,这2个进程也将满足最大需求,所以系统不会发生死锁。
反证法:
设该系统发生死锁,即设k 个线程用尽了M 个资源,但都没达到其最大需求。已经满足了需求的进程数为N – K.
Xi 为线程i 所占用的资源数,Yi 为线程i还需要的资源数。Yi > =1 , 形成死锁。
X1 + X2 + X3 + X4 + ……+ Xk = M
(X1 + X2 + ……+ Xk)+ (Y1 + Y2 + ……+ Yk)< M + N – (N – k)
Y1 + Y2 + ……+ Yk < k
若Yi > = 1 , Y1 + Y2 + ……+ Yk >= k, 矛盾,即该系统不可能发生死锁。
方法二:
(1)进程P1,P2,P3按顺序分别申请一个资源,这时系统中还剩一个资源。然后P1得到剩下的那一个资源,运行完毕再释放掉一个资源,这时系统中还是有一个剩余的资源,接下来进程P2得到一个资源,运行完毕后释放掉一个资源,最后P3得到P2释放的一个资源得以运行。安全序列
(2)进程Pi,所需的资源数为Si。由题知M≧1,Si≦M
在N个进程中每次让所需资源最小的进程Pmin(i)运行(每次申请一个资源),它所需的资源数为Smin(i),运行完后释放一个资源,此时系统中剩余的资源为M-Smin(i)+1个。Smin(i+1)为系统中进程所需的第二小的资源数。
只要满足公式M-Smin(i)+1≧Smin(i+1)系统就不会发生死锁
要使M-Smin(i)+1≧Smin(i+1)
只需M+1≧Smin(i+1)+ Smin(i)
只需M+1≧2Smin(i) (放缩Smin(i+1)>Smin(i))
只需Smin(i)≦(M+1)/2
因为M≧1 所以 2M≧M+1 即 M≧(M+1)/2 所以 Smin(i)≦(M+1)/2成立
所以系统不会发生死锁