操作系统——死锁——银行家算法

银行家算法的实现需要三个矩阵:

  1. Max矩阵:用于存储每个进程完成所需要的全部资源量
  2. Allocation矩阵:用于存储每个进程每个资源已分配的情况
  3. Need矩阵:存储每个进程还需要的各个资源数

如下以一个实例来说明银行家算法:

假设一组进程,有P1,P2,P3,P4四个进程,有A,B,C,D四种资源:

要求使用银行家算法找出能够避免死锁的资源分配序列(如果存在避免死锁的序列)。

需求如下:

Max
/ABCD
P10656
P20012
P31750
P42356

每一行分别表示对应的进程Pi的完成需要多少对应资源。

每个进程当前得到资源的情况如下:

Allocation
/ABCD
P10014
P20012
P31000
P41354

还没有被使用的资源量为:

Available:A:1,B:5,C:2,D:0。

在现在这个情况下,需要完成所有进程,需要的资源量Need的计算方式为Max-Allocation得到:

Need
/ABCD
P10642
P20

0

00
P30750
P41002

表示现在还需要这么多资源才能完成,现在开始对P1到P4尝试为其分配资源,检查是否会导致死锁:

一、方案1——如果将资源优先分配给P1:

  • Available:A:1,B:5,C:2,D:0
  • P1需要:A:0,B:6,C:4,D:2

不安全。

二、方案2——优先分配给P2:

  • Available:A:1,B:5,C:2,D:0
  • P2需要:A:0,B:0,C:0,D:0

能够满足,安全,

P2进程完成后释放资源C:1,D:2。

现在的可用资源:Available:A:1,B:5,C:3,D:2

对于剩下的三个进程,能满足条件的只有P4,则分配给P4完成进程,后P4释放资源A:1,B:3,C:5,D:4,可用资源更新为:Available:A:2,B:8,C:8,D:6

对于剩下两个进程,都能满足......完成....释放....

....重复过程....

最终得到两个序列P2,P4,P1,P3和序列P2,P4,P3,P1

三、方案三——优先分配给P3

重复上述过程。

四、方案四——优先分配给P4

重复上述过程。

最终能够得到几个不会导致死锁且能安全完成这几个进程的操作序列,这个过程即银行家算法。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D D D D C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值