银行家算法

数据结构:
可利用资源向量(Available):系统还可以分配的资源
最大需求矩阵(Max):进程的最大资源需要
分配矩阵(Allocation):进程已经获得的资源
需求矩阵(Need):进程还需要获得的资源
在这里插入图片描述
P1、P2、P3、P4是四个贷款人
A、B、C是每个贷款人所需要贷款的项目
比如P1需要A项目贷款3元、B项目贷款2元、C项目贷款2元,只有都贷款成功P1才算贷款成功,才能完成自己工程。

银行可贷的936,首先贷一部分钱出去,贷完之后,还剩下的钱就是011
把剩下的011贷款出去,银行家是很聪明的,希望把剩下的钱借给你能借给的贷款人,这样他早点做完项目,早点把钱还回来。
确保剩下的钱能够满足P1、P2、P3、P4其中一个还需要的钱,那应该贷款给谁?
只有P2还需要的钱是小于011的(001),那么贷款给他,贷款给他之后,还剩下的钱是010,这是P2拿到了钱满足了自己需要的613,于是做完自己的工程之后把钱还给银行,银行此时可用的变成了(010+613=623)

在这里插入图片描述
于是变成了
在这里插入图片描述
P2贷款完成,这个时候剩下的钱对于P1、P3、P4来说都可以贷款给他们中的任意一个,假如按照顺序来,先贷款给P1,贷款给P1后,银行可用的钱变成了(623-222=401),贷款完成P1把所有的前还回来,银行可用的前变成了(401+322=723)在这里插入图片描述
然后变成了
在这里插入图片描述
按照上面的规则贷款给P3
在这里插入图片描述
剩下P4,这个时候把银行可用的是934,给P4需要的部分,变成了(934-420=514),P4拿到钱做完工程全部还回来,银行最后可用的钱变成了(514+422=936),和原来借出去的钱一样了。

而最后的P2->P1->P3->P4就叫做安全序列。

来自bilibili视频:https://www.bilibili.com/video/av57430740?from=search&seid=8281291293563365479

发布了553 篇原创文章 · 获赞 3842 · 访问量 276万+

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览