银行家算法例题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

银行家算法解题流程图:

相关文档
最新文档