银行家算法

银行家算法

银行家算法,避免产生死锁寻找进程安全队列的一种算法。

银行家算法的四要素:

  • 需求、已分配、还需要、可利用
  • 还需要=需求-已分配

比较还需要和可利用的关系
在这里插入图片描述
总结:

  • 可以根据此表推算出安全队列(即不会产生死锁)
  • 进程运行后会自动释放Allocation中的资源到Available中。

两个常见的问题
(1)该状态是否安全?
(2)若进程P2提出请求Request(1,2,2,2)后,系统能否将资源分配给它?

(1)答:根据下图可以获得安全队列 P0、P3、P4、P1、P2
Work+Allocation 是完成本进程后可以使用的资源数 Work 当前可以使用的进程数
在这里插入图片描述
(2)
答:P2发出请求向量Request(1,2,2,2),系统按银行家算法进行检查:
①Request2(1,2,2,2)<=Need2(2,3,5,6) //这里导致资源分配之后 不满足需求 导致资源不会被释放
②Request2(1,2,2,2)<=Available(1,6,2,2) //请求的资源小于可用资源 请求可通过但是安全检查无法通过
③系统先假定可为P2分配资源,并修改Available,Allocation2和Need2向量:
Available=(0,4,0,0)
Allocation2=(2,5,7,6)
Need2=(1,1,3,4)
此时再进行安全性检查,发现 Available=(0,4,0,0) 不能满足任何一个进程,所以判定系统进入不安全状态,即不能分配给P2相应的Request(1,2,2,2)。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值