记录银行家算法-核心逻辑和经典实例

学习自:

一句话+一张图说清楚——银行家算法_土豆洋芋山药蛋的博客-CSDN博客_银行家算法

一、核心逻辑:

银行家算法是避免死锁的一个经典算法;

通过判断如果按照一定的顺序给每个等待资源的线程依次分配+回收后,所有进程都可以执行完成,那么就是安全的,可以避免死锁,反之不安全。

二、经典实例:

现有P0~P4五个进程,分别已分配、还需要的资源如下,当前可用资源为1 6 2 2,如下所示:

Process

Allocation

Need

Available

P0

0 0 3 2

0 0 1 2

1 6 2 2

P1

1 0 0 0

1 7 5 0

P2

1 3 5 4

2 3 5 6

P3

0 3 3 2

0 6 5 2

P4

0 0 1 4

0 6 5 6

1、当前状态是否是安全的?

经安全性分析,按照如下顺序分配回收可以执行完成:

说明:

Process——进程;

Available——分配当前进程前可用资源,以4种资源为例,数字代表资源个数;

Need——当前进程需要资源个数;

Allocation——当前进程已分配资源个数(当进程执行完成后会释放分配当前进程前可用资源+已分配资源,即Available+Allocation);

Available+Allocation——当前进程执行完后释放出来的资源

Process

Available

Need

Allocation

Available+Allocation

P0

1 6 2 2

0 0 1 2

0 0 3 2

1 6 5 4

P3

1 6 5 4

0 6 5 2

0 3 3 2

1 9 8 6

P1

1 9 8 6

1 7 5 0

1 0 0 0

2 9 8 6

P2

2 9 8 6

2 3 5 6

1 3 5 4

3 12 13 10

P4

3 12 13 10

0 6 5 6

0 0 1 4

3 12 14 14

结论:状态是安全的

2、如果P2提出请求Request(1,2,2,2)后,系统能否将资源分配给它?

  1. 首先提出请求需要判断是否小于等于它总共需要的资源,Request2(1,2,2,2)<Need2(2,9,8,6);
  2. 然后判断提出请求资源是否小于等于当前可用资源,Request2(1,2,2,2)<Available(1,6,2,2);
  3. 如上两个判断无误,那么假设将资源分配给P2,那么当前Available(0,4,0,0),Allocation2(2,5,7,6),此时P2还未请求完所有资源所以不会释放持有的(2,5,7,6),而(0,4,0,0)又不能满足任何进程的使用;

结论:所以如果将资源分配给它,系统进入不安全状态

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值