银行家算法

✍ dations ◷ 2025-12-06 09:27:01 #操作系统技术,荷兰发明

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

相关

  • 胃及十二指肠溃疡消化性溃疡(英语:peptic ulcer disease,简称PUD),又称胃及十二指肠溃疡。这是指胃、小肠前段(十二指肠)或幽门,有时也包含了食道下端的黏膜损伤(溃疡)。在胃发生的溃疡称作胃溃疡(英语:s
  • 心脏心脏(英语:heart),常简称心,是一种在人类和其他动物都有的肌造器官,它的功用是推动循环系统中血管的血液。血液提供身体氧气以及养分,同时也协助身体移除代谢废弃物(英语:metabolic w
  • 中央工业安全部队中央工业安全部队(英语:Central Industrial Security Force,,缩写为CISF)是印度中央武装警察部队(英语:Central Armed Police Forces)一个分支。直属于印度内务部(英语:Ministry of Ho
  • Hosub2/subOsub3/sub氧化钬,又称三氧化二钬,化学式Ho2O3,是稀土元素钬与氧元素组成的化合物,与氧化镝并为已知顺磁性最强的物质之一。氧化钬是氧化铒矿物的成分之一。天然状态下,氧化钬常与镧系元素
  • 鬼方鬼方,源自曾与轩辕黄帝联姻的氏族−大隗氏,是商代的小国部族之一,位于今陕西北部、山西西北部和内蒙古西部。在商朝有许多小国都称“方”,相当于“邦”的意思,例如:土方、
  • 阿帕奇-希特格里夫斯阿帕奇-希特格里夫斯国家森林(英语:Apache-Sitgreaves National Forest)是美国的一处国家森林,位处亚利桑那州中东部与新墨西哥州境内,占地面积约2,761,386英亩(11,174.93平方千米
  • 太鲁阁客运太鲁阁客运股份有限公司(英语:Taroko Bus Traffic CO.,LTD),简称太鲁阁客运,为台湾花莲县一家市区客运业者,主要经营花莲县市区公车301线、302线、303线与305线。
  • 尤里卡尤里卡县(英语:Eureka County),美国内华达州中部的一个县,面积10,826平方公里。根据2010年人口普查,本县共有人口1,987人。本县县治为尤里卡(Eureka)。本县于1873年3月1日成立,县名是
  • 詹姆士六世及一世詹姆士一世和六世(英语:James I and James VI,1566年6月19日-1625年3月27日),苏格兰国王,称詹姆士六世(英语:James VI),1567年7月24日到1625年3月27日在位,1603年未婚的英格兰女王伊丽莎
  • 2003年贵州木冲沟矿难2003年贵州木冲沟矿难,为2003年2月24日,发生于贵州省六盘水市水城县的一起重大煤矿瓦斯事故,共造成35人死亡。2003年2月24日下午14时55分,贵州省水城矿业公司木冲沟煤矿发生瓦斯