银行家算法

✍ dations ◷ 2025-11-18 15:33:46 #操作系统技术,荷兰发明

银行家算法(Banker's Algorithm)是一个避免死锁(Deadlock)的著名算法,是由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计的一种避免死锁产生的算法。它以银行借贷系统的分配策略为基础,判断并保证系统的安全运行。

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

      Allocation   Max   Available    ABCD    ABCD  ABCD P1   0014    0656  1520  P2  1432    1942  P3  1354    1356 P4  1000    1750

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

   NEED ABCD 0642  0510 0002 0750

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

 FINISH false false false false

接下来找出need比available小的(千万不能把它当成4位数 他是4个不同的数)

   NEED    Available ABCD  ABCD 0642  1520 0510<- 0002 0750

P2的需求小于能用的,所以配置给他再回收

  NEED     Available ABCD  ABCD 0642  1520 0000 +1432 0002------- 0750  2952

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

 FINISH false true false false

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

  NEED      Available ABCD  A B C D 0642  2 9 5 2 0000 +1 3 5 4 0000---------- 0750  3 12 10 6


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

如果所有过程有可能完成执行(终止),则一个状态(如上述范例)被认为是安全的。由于系统无法知道什么时候一个过程将终止,或者之后它需要多少资源,系统假定所有进程将最终试图获取其声明的最大资源并在不久之后终止。在大多数情况下,这是一个合理的假设,因为系统不是特别关注每个进程运行了多久(至少不是从避免死锁的角度)。此外,如果一个进程终止前没有获取其它能获取的最多的资源,它只是让系统更容易处理。

基于这一假设,该算法通过尝试寻找允许每个进程获得的最大资源并结束(把资源返还给系统)的进程请求的一个理想集合,来决定一个状态是否是安全的。不存在这个集合的状态都是不安全的。

P - 进程的集合

Mp - 进程p的最大的请求数目

Cp - 进程p当前被分配的资源

A - 当前可用的资源

相关

  • 夏威夷群岛夏威夷群岛(英语:Hawaiian Islands),旧称三明治群岛(Sandwich Islands),太平洋中北部的岛群,波利尼西亚群岛的一部分,是由19个较大的岛屿和其他小岛组成的群岛,成因多为火山岛或珊瑚岛
  • CD18n/an/an/an/an/an/an/an/an/an/a整联蛋白β-2(英语:Integrin beta-2,CD18)是一个由人类基因 ITGB2 编码的蛋白质,是整联蛋白的一种β亚基。能与下列四种整联蛋白α亚基搭配形成四
  • 动质体纲锥体虫Trypanosomatida Bodonida动质体(Kinetoplastid)是一种附有鞭毛的原生动物,包含某些能使人类或其他动物发生严重疾病的寄生虫。这类生物具有许多不同型态,生活于水中或泥
  • 布里真德坐标:51°30′26″N 3°34′42″W / 51.5072°N 03.5784°W / 51.5072; -03.5784布里真德(英语:Bridgend),是威尔士的一个郡自治市镇。距离威尔士首府加的夫约22-英里(35-千米),它的
  • 第四舰队第四舰队(日语:第四艦隊/だいよんかんたい Daiyon Kantai ?)是旧日本海军的一支舰队编制。日本海军从明治时代后期起至第二次世界大战为止,先后设立过3次第四舰队:最初是日俄战
  • 怀卡托河怀卡托河(Waikato River),新西兰北岛河流,全长425公里,是新西兰全国最长的河流。Waikato一词来源于毛利语,意为“流水”。怀卡托河发源于鲁阿佩胡山东坡,流入新西兰第一大湖泊陶
  • 德国牧羊犬德国牧羊犬(德语:Deutscher Schäferhund;英语:German Shepherd),是狗的一个品种,1977年才正式确定命名为德国牧羊犬,故各地命名迥异,中文语境下常称为德国狼犬或德国狼狗。德国牧羊
  • 图像处理图像处理是指对图像进行分析、加工、和处理,使其满足视觉、心理或其他要求的技术。图像处理是信号处理在图像领域上的一个应用。当前大多数的图像均是以数字形式存储,因而图像
  • 卵生 (佛教)卵生(梵语:aṇḍa-ja),佛教术语,意为从卵壳中出生者,为四生(四种众生出生的方式)之一。和生物学的卵生(Oviparity)和卵胎生(Ovoviviparity)概念基本相同。卵生,意为有情从卵中破壳而生出,
  • NY5型柴油机车NY5型柴油机车是西德亨舍尔公司为中国铁路设计制造的液力传动柴油机车车型之一,总共四台机车于1967年交付使用,全部配属北京铁路局北京内燃机务段,引进目的是为了借鉴西德在液