银行家算法

✍ dations ◷ 2025-02-24 02:55:12 #操作系统技术,荷兰发明

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

相关

  • At4f14 5d10 6s2 6p52, 8, 18, 32, 18, 7蒸气压主条目:砹的同位素砹(Astatine,台湾译作砈,旧讹作“鈪”、“銰”)是一种具有极高放射性的化学元素,符号为At,原子序为85。地球上所有的
  • 埃德沃德·迈布里奇埃德沃德·迈布里奇(Eadweard James Muybridge,/ˌɛdwərd ˈmaɪbrɪdʒ/;1830年4月9日-1904年5月8日)是一位英国摄影师,知名于在摄影运动研究方面的开创性工作和在电影放映机的
  • 弗里斯兰语弗里斯兰语(Frysk、Frasch、Fresk或Friisk),又译弗里西语、弗里西亚语、弗里斯语,是荷兰及德国内靠近北海南部处一族人所使用的语言,使用人数大约在40万左右。弗里斯兰语属于日耳
  • 帽子帽子是戴在头部的服饰,有遮阳、挡雨、防尘、美观、保护头部等用途。以下列出几种常见的帽子款式,详见帽子款式列表.
  • 包立方程式泡利方程或称薛定谔-泡利方程,为描述带有自旋1/2的粒子在与电磁场相互作用下的修正方程(自旋1/2粒子例如电子)。在此之前,用以描述粒子行为的薛定谔方程则未考虑到粒子自旋的性
  • 水苏水苏(学名:Stachys japonica)为唇形科水苏属下的一个种。
  • 卡拉巴萨斯卡拉巴萨斯(英文:Calabasas),是美国加利福尼亚州洛杉矶县下属的一座城市,位于圣费尔南多谷以西、圣莫尼卡山的西北方,毗邻阿古拉山、希登希尔斯、马里布。建市于1991年4月5日,面积
  • 宜章县宜章县位于中国湖南省南部,为郴州市辖县。地处南岭山脉中段,骑田岭南麓。县域总面积2,142.7平方公里,位居全省各县市的第42位;全县常住人口579,565人(2010普查),居全省第43位。2011
  • 瓦特·布拉克瓦特·布拉克(Walter Block, 1941年-),奥地利经济学派的美国经济学家。1941年生于纽约布鲁克林区,父亲是一名会计师、母亲是一名律师助理。他在布鲁克林学院(Brooklyn College)获得
  • ATC代码 (J05)A·B·C·D·G·H·QI·J·L·M·N·P·R·S·VATC代码J05(抗病毒药)是解剖学治疗学及化学分类系统的一个药物分组,这是由世界卫生组织药物统计方法整合中心(The WHO Collaborat