银行家算法

✍ dations ◷ 2025-11-26 05:47:40 #操作系统技术,荷兰发明

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

相关

  • III型分泌系统III型分泌系统(英语:Type III secretion system 缩写TTSS或T3SS)是革兰氏阴性菌的一个由多组分蛋白复合体形成的跨膜通道,它通过分泌蛋白,或把这些毒力蛋白直接注入宿主细胞中发
  • 辐射尘放射性落下灰,也称放射性沉降物、放射性落尘、辐射落尘或原子尘,是核弹爆炸或核反应堆泄漏后从天而降的放射性尘埃,含有大量放射性元素,是一种放射性污染。核弹爆炸产生的辐射尘
  • 噪声通道编码定理在信息论里,有噪信道编码定理指出,尽管噪声会干扰通信信道,但还是有可能在信息传输速率小于信道容量的前提下,以任意低的错误概率传送数据信息。这个令人惊讶的结果,有时候被称为
  • 大陆飘移大陆漂移学说是地球大陆相对于彼此的运动,因此似乎在海床上“漂流”。最初由亚伯拉罕·奥特柳斯在1596年提出,后来德国科学家阿尔弗雷德·魏格纳在1912年加以阐述,中文中“大陆
  • 洛赫科夫期洛赫考夫期(英语:Lochkovian)是泥盆纪的第一个时期,年代大约位于419.2–410.8百万年前。
  • Freud S西格蒙德·弗洛伊德(德语:Sigmund Freud,出生名:Sigismund Schlomo Freud,1856年5月6日-1939年9月23日),奥地利心理学家、精神分析学家、哲学家,犹太人。生于奥地利弗莱堡(今属捷克),后
  • 长吻鳄科长吻鳄科(学名Gavialidae)又名食鱼鳄科,是爬行纲鳄目下的一科,现存仅有两种:恒河鳄(Gavialis gangeticus)和马来鳄(Tomistoma schlegelii)。长吻鳄科是大型半水生爬行动物,口鼻部
  • G显带G显带(G-banding;G banding;Giemsa banding)是一种染色体着色方法。通过这种方法可以了解染色体的情况。可以从中得到胎儿或者是癌细胞的染色体组型。科学家可以利用这种技术了
  • 海螯虾科另见内文。海螯虾科(学名:Nephropidae),又名螯龙虾科,俗称美国龙虾、加拿大龙虾、澳洲大龙虾,有一对非常巨大的钳子,是一种大型海生甲壳类的总称,生物学上属于十足目。在中文翻译中,
  • 封条封条(英语:Seal)在古代又称封识,是商人在货柜物品上贴上一个条状贴纸(相当于物品的身份证),用途是避免货柜在运输途中被人掉包,失窃的风险,持有者大多为:货主(付货人)、航商和海关等三类