1、产生死锁的四个条件是什么? 互斥、占有且等待、不可抢占、循环等待
2、死锁避免、检测和预防之间的区别是什么?
死锁避免通过限制进程启动或资源分配,预防通过运用某种策略来消除产生死锁的四个条件之一,来保证不让死锁状态出现;而检测允许死锁出现,定期检测死锁的存在并从死锁中恢复出来。 3、说明: 6个进程:P0…P5
4种资源:A(15)、B (6) 、C (9) 、D (10) T0时刻状态如图所示
Allocation Claim Available A B C D A B C D A B C D P0 2 0 2 1 9 5 5 5 6 3 5 4 P1 0 1 1 1 2 2 3 3 P2 4 1 0 2 7 5 4 4 P3 1 0 0 1 3 3 3 2 P4 1 1 0 0 5 2 2 1 P5 1 0 1 1 4 4 4 4 问题:
(1)验证可用资源向量的正确性。 (2)计算需求矩阵。
(3)指出一个安全的进程序列来证明当前状态的安全性。同时指出每个进程结束时可用资源向量的变化情况。
(4)假设P5请求资源( 3,2,3,3),该请求应该被允许吗?请说明理由。 4、如下的代码涉及3个进程竞争6种资源(A~F)。 a. 使用资源分配图来指出这种实现中可能存在的死锁。
b. 改变某些请求的顺序来预防死锁。注意不能夸函数移动请求,只能在函数内部调整请求的顺序。使用资源分配图来证明你的答案。 Void P0() { while(true){ get(B); get(C); get(A); //use A,B,C release(B); release(C); release(A); } }
Void P1() { while(true){ get(B); get(D); get(E); //use D,E,B release(B); release(D); release(E); } } Void P2() { while(true){ get(D); get(C); get(F); //use C,F,D release(D); release(C); release(F); } } //critical region; //critical region; //critical region; 5、考虑一个有4个进程和1种资源的系统。当前的资源请求和分配矩阵如下: C=(3 2 9 7), A=(1 1 3 2)
最少需要多少单位的资源才能保证当前的状态是安全的?
操作系统第六章
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)