银行家算法

✍ dations ◷ 2024-12-23 01:55:43 #操作系统技术,荷兰发明

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

相关

  • 肠道肠脏,或称肠,是指消化系统中,由胃至肛门之间的消化管道,为大部分化学消化过程的所在地,将食物的营养吸收。肠脏主要分为小肠(十二指肠、空肠及回肠)及大肠(盲肠、结肠及直肠)两部分。
  • 苏美苏美尔(阿卡德语:Šumeru;苏美尔语:
  • 柯尔伯-施密特反应科尔贝-施密特反应(德语:Kolbe-Schmitt-Reaktion)是干燥的酚钠或酚钾与二氧化碳在加温(125-150°C)加压(100atm)下生成羟基苯甲酸的反应。 它是向芳环上引入羧基的一种常用方法,常用
  • 胰岛素抗拒胰岛素抵抗(英语:insulin resistance),是指脂肪细胞、肌肉细胞和肝细胞对正常浓度的胰岛素产生反应不足的现象,亦即这些细胞需要更高的胰岛素浓度才能对胰岛素产生反应。在脂肪细
  • 一般线性模式一般线性模型(general linear model, multivariate regression model)是一个统计学上常见的线性模型(英语:Linear model)。这个模型在计量经济学的应用中十分重要。不要与多元线
  • 泰晤士报《泰晤士报》(英语:The Times),英国的一份于全国发行的综合型日报,是一张对全球政治、经济、文化发挥巨大影响力的报纸。昔译《太晤士报》,又称《伦敦时报》。《泰晤士报》隶属于
  • 湘西会战湘西会战,雪峰山战役(日语:芷江作戦)为抗日战争后期中国战场上最后一场由日军发动进攻的大型战役。主要作战时间为1945年4月至6月,战场位置位于在中国湖南省中西部,侵华日军此战主
  • 肯特州立大学肯特州立大学(Kent State University, Kent State, KSU)是美国一所公立大学,位于俄亥俄州东北部的肯特,成立于1910年。成立之初为肯特师范学院,之后于1930年代成为公立大学。目前
  • 库兴氏溃疡库兴氏溃疡(Cushing ulcer)是一种因颅内压上升所造成的肠胃道溃疡。本疾病以哈维·库兴命名。有时候则又称罗基坦斯基-库兴氏症候群(Rokitansky-Cushing syndrome)。本疾病主要
  • 五阶六边形镶嵌在几何学中,五阶六边形镶嵌是由六边形组成的双曲面正镶嵌图,在施莱夫利符号中用{6,5}表示。五阶六边形镶嵌即每个顶点皆为五个六边形的公共顶点,顶点周围包含了五个不重叠的六