在上一篇博客中已经说了银行家算法的实现,这一篇就是理解银行家算法的实质,就是如何计算。
银行家算法的例题详解
必知
(1) 可利用资源向量Available。(2) 最大需求矩阵Max。
(3) 已分配给该进程的资源Allocation。(4) 需求矩阵Need。
例题一:
题目:
就验证我在上一篇博客中银行家算法中的结果
已知的是这个
1、A、B、C、D4类资源分别还剩1、5、2、0个现在系统是否处于安全状态?
2、如果现在进程Pl提出需要(0、4、2、0)个资源的请求,系统能否满足它的请求?
答案:
存在安全序列,p0-p2-p1-p3-p4
2、
对P1请求0420
Request(0420)<Need_p1(0750)
Request(0420)<Allocation(1000)
例题二:
题目:
1、该状态是否安全?
2、若进程P2提出请求Request(1,2,2,2)后,系统能否将资源分配给它?
答案:
所谓安全序列不唯一。
解题思路:
1、 先求need矩阵。是Max-Allocation就得到Need矩阵。
2、 系统安全性分析,Work、Need、Alloaction、Work+Allocation,
3、 第一个进程。Work的初始化等于Available,然后Need、Alloaction都是填写步骤一对应的need。Work+Allocation也就是加法。
4、 关于安全序列并不唯一,就比较work跟need,Need[i, j]≤Work[j];就可以选择执行。
5、 第二个进程的Work是第一行的Work+Allocation,第一个进程已经结束释放掉了。后面对应的都是这样
6、 如果所有进程的Finish[i]=true都满足,则表示系统处于安全状态;
7、 关于请求Request,首先判断与need,Available大小。然后假设满足。将Request的值跟原Allocation相加得到新Allocation,Available也要减少对应的值。
8、 每个进程还需要多少进程才能满足,即Request的值 = Need - Allocation
制作人:只识闲人不识君
日期:2020.06.25