银行家算法例题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
银行家算法例题(P120)
例:系统中原有三类资源A、B、C和五个进程P1、P2、P3、P4、P5,A资源17,B资源5,C资源20。T0时刻系统资源分配和进程最大需求如下表。
1、T0时刻系统是否处于安全状态?
2、是否可以允许以下请求?
(1) T1时刻:P2 Request2=(0,3,4)
(2 ) T2时刻:P4 Request4=(2,0,1)
(3)T3时刻:P1 Request1=(0,2,0)
注:T0 T1 T2 T3时刻是前后顺序,后一时刻是建立在前一时刻的基础上。
解:由题可知Need=Max-Allocation
Available A=17-(2+4+4+2+3)=2(原有-分配)
同理Available B=3,Available C=3
即T0时刻资源分配表如下所示(表中数据顺序均为A B C):
1、判断T0时刻是否安全,执行安全算法找安全序列,过程如下表:
T0时刻能找到一个安全序列{P4,P3,P2,P5,P1},故T0时刻系统处于安全状态。
2、判断T1 T2 T3时刻是否满足进程请求进行资源分配。
(1)T1时刻,P2 Request2=(0,3,4)
//第一步判断条件
①满足Request2=(0,3,4)<=Need2(1,3,4)
②不满足Request2=(0,3,4)<=Available(2,3,3)
故系统不能将资源分配给它,此时P2必须等待。
(2)T2时刻,P4 Request4=(2,0,1)
//第一步判断条件
①满足Request4=(2,0,1)<=Need4(2,2,1)
②满足Request4=(2,0,1)<=Available(2,3,3)
//第二步修改Need、Available、Allocation的值
Available=Available-Request4= (0,3,2)
Allocation4=Allocation4+Request4=(4,0,5)
Need4=Need4-Request4=(0,2,0)
//第三步执行安全算法,找安全序列
(注:先写上work,其初值是系统当前进行试分配后的Available(0,3,2),找五个进程中Need小于work的进程,比如Need4<=Work满足,则将P4写在第一行的最前面,同时写出P4的Need和Allocation,以此类推)
//第四步在T2时刻存在安全序列{P4,P2,P3,P5,P1},则满足Request4请求,将Request4=(2,0,1)分配给P4。
(3)T3时刻,P1 Request1=(0,2,0)
//第一步判断条件
①满足Request1=(0,2,0)<=Need1(3,4,7)
②满足Request1=(0,2,0)<=Available(2,3,3)
//第二步修改Need、Available、Allocation的值
Available=Available-Request1= (0,1,2)(在T2时刻基础上)
Allocation=Allocation1+Request1=(2,3,2)
Need1=Need1-Request1=(3,2,7)
//第三步执行安全算法,找安全序列
对于所有Need i均不小于Work(初值是Available (0,1,2)),找不到安全序列,故系统不能将资源分配给它,P1必须等待。
归纳总结——银行家算法解题总结为四步走:
第一步:判断银行家算法中的条件,看是否满足,如果满足跳转第二步(判断条件)
①Request i<=Need i
②Request i<=Available
第二步:试图分配,修改Need、Available、Allocation的值(修改NAA)Available=Available-Request i
Allocation i=Allocation i+Request i
Need i=Need i-Request i
第三步:执行安全算法,找安全序列(找安全序列)
第四步:找到了安全序列,则此时系统满足进程P i的请求Request i
。(真分配)系统不会进入不安全状态,即可将Request i分配给进程P
i
银行家算法解题流程图: