银行家算法

银行家算法是一种避免系统死锁的资源分配策略。通过维护可利用资源向量、最大需求矩阵、分配矩阵和需求矩阵,确保系统安全。在案例中,通过模拟贷款过程展示了如何确定安全序列,以保证所有贷款人都能顺利完成项目并归还贷款,从而恢复系统资源。

数据结构:
可利用资源向量(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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值