银行家算法

✍ dations ◷ 2025-12-09 14:57: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 - 当前可用的资源

相关

  • 复层噬菌体科复层噬菌体属 Tectivirus复层噬菌体科(Tectiviridae),也译作复层病毒科,tecti来自拉丁文的tectus,有有盖的之意。主要宿主为细菌。代表种:
  • 防止船舶污染国际公约防止船舶污染国际公约(英语:International Convention for the Prevention of Pollution from Ships,简称MARPOL),现称“关于1973年防止船舶污染国际公约之1978年议定书(英语:Proto
  • 默认选项默认选项(Default),又称缺省值,是一种计算机术语,指在无决策者干预情况下,对于决策或应用软件、计算机程序的系统参数的自动选择。默认选项的设计可以在用户不须决策的状况下就可
  • 保克海峡保克海峡(泰米尔语:பாக் சலசந்தி),是位于印度南角泰米尔纳德邦与斯里兰卡本岛之间的海峡,以罗伯特·保克之名命名。该海峡东北与孟加拉湾相连,西南与马纳尔湾相通,全长1
  • 国立高雄应用科技大学国立高雄应用科技大学(英语:National Kaohsiung University of Applied Sciences),简称KUAS、高应、高应大、高应科大,前身为1963年所创立的三大工专台湾省立高雄工业专科学校。2
  • α-酮己二酸2-Oxoadipateα-酮己二酸(英语:α-Ketoadipic acid,或称为2-氧代己二酸 2-oxoadipate)是一种赖氨酸代谢的中间产物。医学导航:遗传代谢缺陷代谢、k,c/g/r/p/y/i,f/h/s/l/o/e,a/u,
  • 太仓市太仓市,位于中国江苏省最南部,是苏州市代管的一个县级市。太仓是典型的江南水乡城市,文化底蕴丰厚,工业发展迅速,是距离上海最近的一座城市,太仓市区与上海市嘉定区相邻。太仓市区
  • 武夷山脉武夷山脉(闽北语:Ǔ-ǐ-súing)位于中国江西省、福建省两省边境,以传说中的山神武夷君而得名。北接仙霞岭,南接九连山,呈东北-西南走向。长约550千米,海拔1000米左右。是赣江、抚河
  • 二乙基镁二乙基镁是一种金属有机化合物,化学式为(C2H5)2Mg。溴乙烷和镁在乙醚中反应,得到乙基溴化镁。再向溶液中加入二乙二醇二甲醚,生成溴化镁的加合物沉淀,以得到二乙基镁。镁和二乙
  • 托马什·莫蒂卡托马什·莫蒂卡(波兰语:Tomasz Marek Motyka,1981年5月8日-)生于华沙,是一名波兰男子击剑运动员,主攻重剑。他曾参加2008年夏季奥林匹克运动会,在男子团体重剑项目上获得一枚银牌。