银行家算法

✍ dations ◷ 2025-09-13 21:29:52 #操作系统技术,荷兰发明

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

相关

  • 自知力自知力是自我判断自我心理状态和生理状态的能力。自知力的损害程度是否完整对判断患者是否患有重型精神疾病如精神分裂症有着很重要的意义。一般的重型精神疾病如发病很急,自
  • 去甲肾上腺素多巴胺再摄取抑制剂去甲肾上腺素-多巴胺再吸收抑制剂(NDRI)是一种借由阻挡多巴胺转运体(DAT)及去甲肾上腺素转运体(NET)而达成作用的再吸收抑制剂。 它可使细胞膜外的多巴胺及去甲肾上腺素浓度增加,达
  • 抗雄性激素抗雄激素(anti-androgens),或称为雄性激素拮抗剂(androgen antagonists)。于1960年代时被发现,借由阻断特定的受体而抑制雄性激素的作用。可以竞争细胞表面的接受器或是影响雄性激
  • 选育人工选择(英语:Artificial selection,又译人择)是指针对特定性状进行育种,使这些性状的表现逐渐强化,而人们不需要的性状则可能逐渐消匿的过程。最早对此进行定义的科学家为查尔斯
  • 医圣张仲景(150年-219年),名机(《历代神仙通鉴》作玑),字仲景,南阳郡涅阳县(今河南邓州市和镇平县一带)人,东汉末年著名医学家。据张仲景在《伤寒杂病论》中所写的自序,东汉末年动乱频繁,疫病
  • OK镜片角膜塑形术是一种眼科学的视力矫正术,又称OK 镜片,透过一种高透气式的硬式隐形眼镜,来改善日间的视力。与一般隐形眼镜不同的是,角膜塑形术使用的隐形眼镜是在夜间配戴,透过透明
  • 公明街道公明街道是中国广东省深圳市光明区下辖的一个街道,原属宝安区。现辖区总面积23.6平方公里,下辖公明、李松蓢、上村、下村、西田等5个社区。2011年总人口90万人,其中户籍人口2.6
  • 房可以指:
  • 喀里多尼亚造山运动喀里多尼亚造山运动(Caledonian orogeny)是一个在不列颠群岛、斯堪的纳维亚山脉、斯瓦尔巴群岛、东格陵兰和部分中欧、北欧地区岩层中纪录的造山运动。喀里多尼亚造山运动相关
  • 扎铁扎铁,Reinforcement Fixing,(建造业议会称扎铁工人为“钢筋屈扎工”(Bar Bender & Fixer))是土木工程的一个专项工序,工作内容是在待建的建筑物之混凝土墙内,先建一个由钢筋及铁线扎