银行家算法

✍ dations ◷ 2025-11-13 14:12:53 #操作系统技术,荷兰发明

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

相关

  • 产前产前出血(Antepartum bleeding)是指在妊娠过程中,孕龄超过20至24周之后,一直到分娩前的阴部出血产前出血和胎儿体重减轻有关系。若在怀孕16周之前使用乙酰水杨酸以预防妊娠毒血
  • 水槽水槽是化学实验中常用的一种仪器,一般为圆形或者方形的大口容器,由塑料或者玻璃制成,可以盛装一定体积的水或其他液体,在多种实验中都可以使用。常用于排水集气法收集不溶于水的
  • 培根弗兰西斯·培根,第一代圣阿尔本子爵(Francis Bacon, 1st Viscount St Alban,1561年1月22日-1626年4月9日),著名英国哲学家、政治家、科学家、法学家、演说家和散文作家,是古典经验
  • 苯磺酸苯磺酸(benzenesulfonic acid、besylate),化学式C6H5SO3H,是一种芳香强酸。它可以由苯在浓硫酸作用下发生磺化反应制得。用于制取苯酚、间苯二酚,也用作酯化反应和脱水反应中的催
  • 米部,为汉字索引中的部首之一,康熙字典214个部首中的第一百一十九个(六划的则为第二个)。就正体和简体中文中,米部归于六划部首。米部通常从左、上、下方为部字。且无其他部首可
  • 银盘计划“银盘”是美国陆军航空军参与二战时曼哈顿计划的代称,起初这个名称专指B-29超级堡垒轰炸机的原子弹投掷改造计划,后来则延伸出训练与执行。正式的计划名称Silver Plated Proj
  • 蜂族地花蜂科(英语:Andrenidae) 蜜蜂科 Apidae 分舌花蜂科 Colletidae 犰狳蜂科(英语:Dasypodaidae) 集蜂科 切叶蜂科 Megachilidae Meganomiidae(英语:Meganomiidae) 准蜂科(英语:Me
  • 卡明斯霍默·斯蒂尔·卡明斯(Homer Stille Cummings,1870年4月30日纽约州布法罗 - 1956年9月10日),美国政治家,曾任美国司法部长。
  • 肯特省肯特省(蒙古语:Хэнтий аймаг,转写:Khentii aimag)位于蒙古国中部偏东,面积80,325平方公里,人口65,811(2011年)。首府温都尔汗。得名于肯特山脉,据说是成吉思汗出生和成长的
  • 腓特烈二世 (奥地利)腓特烈二世(德语:Friedrich;1211年4月25日-1246年6月15日),有“好斗的腓特烈”称号,奥地利巴本堡王朝公爵(1230年—1246年在位)及施蒂里亚公爵(1230年—1246年在位)。奥地利公爵利奥波