银行家算法

✍ dations ◷ 2025-10-14 00:55:41 #操作系统技术,荷兰发明

银行家算法(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 - 当前可用的资源

相关

  • 澳门卫生局卫生局 (葡萄牙语:Serviços de Saúde, SS;澳门回归前称为卫生司、葡萄牙语:Serviços de Saúde de Macau, SSM)是专责澳门的医疗及食物安全以及执行政府的医疗卫生政策的政府
  • 塑料塑料是指以高分子量的合成树脂为主要组分,加入适当添加剂,如增塑剂、稳定剂、抗氧化剂、阻燃剂、润滑剂、着色剂等,经加工成型的塑性(柔韧性)材料,或固化交联形成的刚性材料塑料最
  • 阿克罗蒂里和德凯利亚阿克罗蒂里和泽凯利亚主权基地区(英语:Sovereign Base Areas of Akrotiri and Dhekelia)是两个位于地中海极东部岛屿塞浦路斯上的英国特殊属地,共同组成了主权基地区,其中阿克罗
  • 麦伦普塔麦伦普塔(英语:Merneptah)古埃及新王国时期第十九王朝的第四任法老。(约公元前1213年7月或8月—约公元前1203年5月2日在位),作为拉美西斯二世第十三子,由于与之较长的十二位兄弟早
  • 沉积沉降又称沉积、沉淀,是悬浮液的粒子下沉积聚的过程。原因可以是地心吸力、离心力或电磁力。在地理学,沉降通常是侵蚀作用的相反,亦即沉积物迁移的最终结果;过程包括跃移。不同大
  • 三菱三菱集团(日语:三菱グループ/みつびしグループ Mitsubishi Gurūpu */?,Mitsubishi Group;也被非官方地称为三菱系列(Mitsubishi Keiretsu))是日本一个企业联合体,为原三菱财阀解体
  • 交互记忆交互记忆(Transactive memory),是最早由丹尼尔·韦格纳(英语:Daniel Wegner)于1985年提出的心理学假说,以作为对像团体迷思这种早期的集体智慧理论的一种回应。交互记忆系统是一种
  • I spy with my little eye我是小间谍(I spy)是一种猜谜游戏。游戏玩法是:一个参与者在心里选定一件事物名称,然后说:“我是小间谍,我发现某某东西的第一个大写字母是...”("I spy with my little eye somet
  • 异丁酰辅酶A脱氢酶缺乏症异丁酰辅酶A脱氢酵素缺乏症(英语:Isobutyryl-coenzyme A dehydrogenase deficiency)是一种遗传病,其会导致患者无法制造出正确的蛋白质,使异丁酰辅酶A脱氢酶不能充分分解缬氨酸。
  • 1959年夏季世界大学生运动会第一届夏季世界大学生运动会于1959年8月26日至9月7日在意大利都灵举行,该届赛事设七个大项,共有45个国家和地区的985名运动员参加。 *  主办国家/地区(意大利)