银行家算法

✍ dations ◷ 2025-08-28 07:29:02 #操作系统技术,荷兰发明

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

相关

  • 胸椎胸椎是脊椎的一部分,位于颈椎和腰椎之间。人类有12块胸椎,大小介于颈椎和腰椎之间,从上至下逐渐增大。Template:Spinal nerves(英语:Template:Spinal nerves) Template:Bones of t
  • 休斯敦县休斯顿县 (Houston County, Georgia,Houston读作house-ton)是美国乔治亚州中部的一个县。面积984平方公里。根据美国2000年人口普查,共有人口110,765人。县治佩里 (Perry)。成
  • 西周西周(日语:西 周/にし あまね Nishi Amane、1829年3月7日-1897年1月31日),日本江户时代后期幕末至明治初期的启蒙家、教育家。江户幕府将军德川庆喜的政治顾问、明治贵族院议员。
  • 卡尔·拉格斐卡尔·拉格斐(德语:Karl Lagerfeld,1933年9月10日-2019年2月19日),全名卡尔·奥托·拉格费尔特(Karl Otto Lagerfeld),知名德籍时尚创意总监、时装设计师、艺术家、摄影师及讽刺画画
  • 义马市义马市,是河南省三门峡市下辖的一个县级市。地处崤函故道,北仰韶峰,南眺洛伊,是自古以来连接东西二京(洛阳、长安)的必经之路,战略地位十分重要,自古兵家必争,商贾必越。现有连霍高速
  • 萨利纳斯萨利纳斯(英文:Salinas)是美国加利福尼亚州蒙特雷县的县府,位于该县西北部。面积49.2平方公里,2006年人口145,032人。1847年开埠。1877年建市。
  • 第1远征军波斯湾战争反恐战争Iraq War美国第一海军陆战队远征军(英语:I Marine Expeditionary Force, IMEF)是美国海军陆战队的空地特遣队之一,主要由美国第1海军陆战师、美国第3海军陆战
  • 吴兴吴兴为浙江省湖州市的古称,三国孙吴甘露二年(公元266年),吴主孙皓取“吴国兴盛”之意改乌程为吴兴,并设吴兴郡,辖地相当于现在的湖州市全境,钱塘县(今杭州)、阳羡县(今宜兴)。隋代因地
  • 血细胞计数板血球计数板是一种用于计数细胞的设备。它原先是被设计用作全血球计数的。血细胞计数板中分布 1 x 1 mm (1 mm2) 的小正方形框;这些正方形框又被进一步分为三种规格:0.25 x 0
  • 劝诱改宗劝诱改宗(英语:Proselytism /ˈprɒsəlᵻˌtɪzəm/ )是一种促使他人进行改变信仰从而接受另一宗教或观念的行为。英文当中与此概念相联系的动词劝诱(proselytize)来自希腊语前