1、知识点
1.银行家算法使用的四个必要的数据结构是:
可用资源向量Available,最大需求矩阵Max,分配矩阵Allocation,需求矩阵Need。
2.银行家算法是不是破坏了产生死锁的必要条件来达到避免死锁的目的?若是,请简述破坏了哪几个条件,若不是,请简述银行家算法是如何避免死锁的?
不是;是通过在资源动态分配过程中防止系统进入不安全状态而避免死锁。
3.简述银行家算法的优缺点。
优点:能够避免死锁,比死锁预防算法灵活且代价小;
缺点:只能用于资源和进程数量固定的场合。
2.例题
1.有A,B,C,D四类资源,其中资源量分别是3,12,14,14,在某时刻如下表所示,采用银行家算法,下列进程执行序列中,哪些不是安全序列( )
最大资源需求量Max | 已分配资源数量Alocation | |||||||
A | B | C | D | A | B | C | D | |
P1 | 0 | 0 | 4 | 4 | 0 | 0 | 3 | 2 |
P2 | 2 | 7 | 5 | 0 | 1 | 0 | 0 | 0 |
P3 | 3 | 6 | 10 | 10 | 1 | 3 | 5 | 4 |
P4 | 0 | 9 | 8 | 4 | 0 | 3 | 3 | 2 |
P5 | 0 | 6 | 6 | 10 | 0 | 0 | 1 | 4 |
A. P1->P4->P5->P2-P3
B.P1->P4->P2->P5->P3
C.P1->P4->P3->P2->P5
D.P1->P3->P4->P5->P2
E.P1->P5->P4->P3->P2
解答:
首先计算出来各个进程间的需要资源量是多少。
由上表可得:剩余资源量A,B,C,D为(1,6,2,2)。
第一步:看一下能满足哪个进程。得,可以满足p1。p1之后(原先已分配的资源也会释放)所以剩余资源变为(1,6,2,2)+(0,0,3,2)=(1,6,5,4),。
第二步:同理第一步,可满足p4:,其它进程不可以。所以此时D,E。选项肯定是不安全的。p4之后剩余资源为(1,6,5,4)+(0,3,3,2)=(1,9,8,6).
第三步:同理一可知p2和p5均可,p3不可,所以c选项也不安全。看A,B选项。不管先p2还是先p5.剩余资源都满足P3。
所以答案是CDE
2.考虑某个系统在某时刻的状态如下表所示:
进程 | Allocation | Max | Available | |||||||||
A | B | C | D | A | B | C | D | A | B | C | D | |
P0 | 0 | 0 | 1 | 2 | 0 | 0 | 1 | 2 | 1 | 5 | 2 | 0 |
P1 | 1 | 0 | 0 | 0 | 1 | 7 | 5 | 0 | ||||
P2 | 1 | 3 | 5 | 4 | 2 | 3 | 5 | 6 | ||||
P3 | 0 | 0 | 1 | 4 | 0 | 6 | 5 | 6 |
使用银行家算法回答下列问题:
(1)请写出Need矩阵?
(2)系统是否处于安全状态?为什么?
(3)如果进程P1发来一个请求Request(0,4,2,0),这个请求能否立刻被满足?为什么?
解答:
对于银行家算法大题的解题思路:
(1)算出Need矩阵【不论题目是否问到,都需要进行这一步】
Need=Max-Allocation
(2)进行系统安全性分析,需要画表格