银行家算法

✍ dations ◷ 2025-11-15 10:42:45 #操作系统技术,荷兰发明

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

相关

  • 呼吸道感染呼吸道感染(英语:Respiratory tract infection)指的是任何涉及到呼吸道部分的感染性疾病,这类疾病一般会被进一步细分为上呼吸道感染(URI、URTI)或者下呼吸道感染(英语:lower respir
  • 奥德省奥德省(法文:Aude)是法国朗格多克-鲁西永-南部-比利牛斯大区所辖的省份,东邻地中海。该省编号为11。5个海外省及大区
  • 迪拜国际机场迪拜国际机场(阿拉伯语:مطار دبي الدولي‎,IATA代码:DXB;ICAO代码:OMDB)是阿拉伯联合酋长国迪拜的主要机场,为阿联酋航空的枢纽港。可起降目前所有的机型,是中东地区重
  • 东台湾东台湾是台湾一个常用的地区简称,又有“后山”之称。东台湾亦指台湾东岸,多指中央山脉以东的花莲县和台东县,故亦称“花东地区”;有时东台湾还包含宜兰县(雪山山脉以东,中央山脉以
  • 1994年世界篮球锦标赛第十二届男篮世界锦标赛是1994年在加拿大多伦多进行的男篮世界杯,是美国NBA球员第一次参加世界锦标赛,并最终轻松获得了冠军。俄罗斯和克罗地亚队则是在苏联和南斯拉夫解体后
  • 蔡命新蔡命新(韩语:채명신,1926年11月27日-2013年11月25日),大韩民国国军退役将领、外交官。因为在韩战与越战中担任过指挥官而闻名,也是驻越韩国军司令部的第一任司令。卸下军装后亦赴任
  • 藤球藤球(印尼语 : "sepak takraw"; 马来语 :"sepak raga"; 爪夷文: سيڤق تكراو or سيڤق راڬا; 泰语:ตะกร้อ, 皇家音译:takro, 发音:; 高棉语:"សីដក់
  • 皮埃尔·高乃依皮埃尔·高乃依(法语:Pierre Corneille,1606年6月6日-1684年10月1日),出生于法国西北部的鲁昂,是十七世纪上半叶法国古典主义悲剧的代表作家,法国古典主义悲剧的奠基人,与莫里哀、拉
  • 姚錱姚錱(1915年10月18日-2005年11月4日),江苏常熟人,中国实验生物学家和肿瘤学家。1915年10月出生于江苏省常熟县。1937年,毕业于国立浙江大学生物系。毕业后留校担任助教。1946年,获
  • 大纳言大纳言(假名:だいなごん;训读音:“おほいものまうすのつかさ”;唐名:亚相或亚槐)是日本太政官制度下设立的一个官职,是第四等级的次官,相当于中国封建王朝时期丞相的槐门属官。官位相