银行家算法安全序列怎么判断

A资源数量17,B资源数量6,C资源数量19
进程名 Allocation Need Available
ABC ABC ABC
P1 4 0 5 4 0 11 2 3 3
P2 4 0 2 5 3 6
P3 2 1 4 4 2 5
P4 2 1 2 5 5 9
P5 3 1 3 4 2 4
1.哪一个是安全序列?
A.p3 p1 p4 p2 p5
B.p1 p3 p5 p2 p4
C.p4 p2 p3 p5 p1
D.p2 p3 p1 p4 p5
2.哪一个不是安全序列
A.P5 P1 P4 P2 P3
B.P3 P2 P4 P1 P5
C.P5 P4 P3 P2 P1
D.P4 P5 P1 P2 P3
详细的解说。不要只是答案

先说一下银行家的算法:
设进程cusneed提出请求REQUEST [i],则银行家算法按如下规则进行判断。
(1)如果REQUEST [cusneed] [i]<= NEED[cusneed][i],则转(2);否则,出错。
(2)如果REQUEST [cusneed] [i]<= AVAILABLE[i],则转(3);否则,等待。
(3)系统试探分配资源,修改相关数据:
AVAILABLE[i]-=REQUEST[cusneed][i];
ALLOCATION[cusneed][i]+=REQUEST[cusneed][i];
NEED[cusneed][i]-=REQUEST[cusneed][i];
(4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。
=================================================
题目中的计算过程:
先算出每个进程还需要多少进程才能满足,即Request的值 = Need - Allocation
进程名 Allocation Need Request Available
ABC ABC ABC ABC
P1 4 0 5 4 0 11 0 0 6 2 3 3
P2 4 0 2 5 3 6 1 2 4
P3 2 1 4 4 2 5 2 1 1
P4 2 1 2 5 5 9 3 4 7
P5 3 1 3 4 2 4 1 1 1
第一题A项p3 p1 p4 p2 p5
先分配给P3,其Request(2,1,1) < available(2,2,3) 满足,分配资源等待P3完成,P3进程完成之后,Available = (2,1,4) + (2,3,3) = (4,4,7)
然后分配给p1,其Request(0,0,6) < available(4,4,7),可以满足资源,分配资源给P1,P1完成任务释放资源Available = (4,0,5) +(4,4,7) = (8,4,12)
接着P4,request(3 4 7) < available(8,4,12),可以满足资源,分配资源给P4,P4完成任务释放资源Available = (2,1,2) +(8,4,12) = (10,5,14)
接着p2,request(1 2 4) < available(10,5,14)可以满足资源,分配资源给P4,P4完成任务释放资源Available = (4,0,2)+ (10,5,14) = (14,5,16)
最后P5,request(1 1 1) < available(14,5,16)可以满足资源,分配资源给P4,P4完成任务,资源全部释放,变为(3 1 3 )+ (14,5,16) = (17,6,19)
所以A是安全序列。
同理分析B p1 p3 p5 p2 p4,先分配给P1的话Request(0,0,6) > available(2,3,3),C资源不满足,所以该序列不安全。
分析C项p4 p2 p3 p5 p1,先分配给p4, Request(3,4,7) > available(2,3,3),ABC资源都不满足,该序列不安全。
分析D项p2 p3 p1 p4 p5,先分配给P2,Request(1,2,4) > available(2,3,3),C资源不满足,所以该序列不安全。

第二题,分析方法跟上面的一样,只是比较费时。如果单选的话,看一下答案,D项,先分配给P4,显然完成P4还需( 3 4 7) ,其大于 available,所D项不安全。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-08-13
我一直用的方法是:首先分析题目有个已分配的栏目还有个尚需要的栏目然后我的做法是先看剩下的资源能否满足 尚需要 的进程,要捡 尚需要 少的先来一旦满足那么剩下的资源不用减,直接加上完成进程的 已分配 即可从小的慢慢回收资源有点像 滚雪球 的思路这个方法是要求最低的方法如果一旦不满足分配资源那么铁定就是不安全了
第2个回答  2019-12-23
A资源数量17,B资源数量6,C资源数量19
进程名 Allocation Need Available
ABC ABC ABC
P1 4 0 5 4 0 11 2 3 3
P2 4 0 2 5 3 6
P3 2 1 4 4 2 5
P4 2 1 2 5 5 9
P5 3 1 3 4 2 4
1.哪一个是安全序列?
A.p3 p1 p4 p2 p5
B.p1 p3 p5 p2 p4
C.p4 p2 p3 p5 p1
D.p2 p3 p1 p4 p5
2.哪一个不是安全序列
A.P5 P1 P4 P2 P3
B.P3 P2 P4 P1 P5
C.P5 P4 P3 P2 P1
D.P4 P5 P1 P2 P3
详细的解说。不要只是答案