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