速通银行家算法

银行家算法是一种用于避免操作系统中死锁的策略,通过模拟银行贷款过程来管理资源。它包括可用资源数组、最大需求矩阵、分配矩阵和需求矩阵等数据结构。文章通过一个示例展示了如何计算进程的需求和可用资源,以及如何逐步分配和回收资源以确保系统的安全性。当所有进程的FINISH标志都变为true时,系统处于安全状态。
摘要由CSDN通过智能技术生成

银行家算法(Banker's Algorithm)是一个避免死锁(Deadlock)的著名算法,它最初是为银行借贷系统服务的,以银行借贷系统的分配策略为基础,判断并保证系统的安全运行。

在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。在这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要申请资源的进程。

银行家算法中的数据结构

表示形式含义
Available(可用资源数组)Available[j]=k现有资源k的数目为k
Max(最大需求矩阵)Max[i,j]=k进程i对资源j的最大需求数目为k
Allocation(分配矩阵)Allocation[i,j]=k进程 i 当前已分得的资源 j 的数目为 k
Need(需求矩阵)Need[i,j]=k进程 i 尚需分配的资源 j 的数目为 k

进程

有四个进程{P1,P2,P3,P4},还有四类进程运行时需要使用的资源{A,B,C,D}

     Allocation    Max    Available
      A B C D      A B C D     A B C D
 P1   0 0 1 4      0 6 5 6     1 5 2 0
 P2   1 4 3 2      1 9 4 2
 P3   1 3 5 4      1 3 5 6
 P4   1 0 0 0      1 7 5 0

我们会看到一个资源分配表,要判断是否为安全状态,首先先找出它的Need,Need即Max(最多需要多少资源)减去Allocation(原本已经分配出去的资源),计算结果如下:

  Need
 A B C D
 0 6 4 2
 0 5 1 0
 0 0 0 2
 0 7 5 0

然后加一个全都为false的字段

     FINISH
 P1  flase
 P2  flase
 P3  flase
 P4  flase

接下来找到Need比Available小的(A与A比较、B与B比较......要求全部满足)

         Need      Available
       A B C D      A B C D
 P1    0 6 4 2      1 5 2 0
 P2    0 5 1 0 <-
 P3    0 0 0 2
 P4    0 7 5 0

此时P2 FINISH的false要改成true(Completed)

     FINISH
 P1  flase
 P2  true
 P3  flase
 P4  flase

P2进程运行完后要释放资源,此时的Available应为Need(P2运行前的)加上Allocation(P2运行前的)

         Need      Available
       A B C D      A B C D
 P1    0 6 4 2      1 5 2 0
 P2    0 0 0 0   +  1 4 3 2
 P3    0 0 0 2  ————————————
 P4    0 7 5 0      2 9 5 2

接下来继续往下找,发现P3的需求为0002,小于能用的2952,所以资源配置给他再回收

         Need      Available
       A B C D      A B C D
 P1    0 6 4 2      2 9 5 2
 P2    0 0 0 0 
 P3    0 0 0 2
 P4    0 7 5 0

接下来继续往下找,发现P3的需求为0002,小于能用的2952,(P1的0642也满足条件)所以资源配置给他再回收

         Need        Available
       A B C D      A  B  C  D
 P1    0 6 4 2      
 P2    0 0 0 0      2  9  5  2
 P3    0 0 0 0   +  1  3  5  4
 P4    0 7 5 0   ——————————————
                    3 12 10  6

依此类推,做完P4→P1,当全部的FINISH都变成true时,就是安全状态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值