银行家算法

✍ dations ◷ 2025-11-15 04:15:29 #操作系统技术,荷兰发明

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

相关

  • 实习生实习,是学生到企业、政府部门或其他组织等进行实践的一个过程,目的是为以后的工作做好准备。实习生通常是在校大学生,但是也有一些高中生或者研究生。实习为想要在各自领域获得
  • 协奏曲协奏曲(concerto),指一件或数件独奏乐器和乐队协同演奏,既有对比又相互交融的作品。由单一乐器为主、管弦乐团为辅的协奏乐曲,充分展现了独奏乐器的特色,又不失合奏的壮丽。用一件
  • 同性恋和心理学心理学是首批将同性恋作为作为离析现象研究的学科之一。在20世纪的大部分时间之前,心理学曾将同性恋视为一种精神疾病。自1970年代以来,行为与社会科学及心理健康专业的共识是
  • 彼得罗·佩鲁吉诺彼得罗·佩鲁吉诺(Pietro Perugino 意大利语:;1446年至1452年间 – 1523年),是一位意大利文艺复兴时期的画家,活跃于文艺复兴全盛期。其最著名的学生是拉斐尔。佩鲁吉诺的出生名为
  • 内埔庄役场内埔庄役场位于今台湾台中市后里区,是日治时期台中州丰原郡内埔庄的行政机关(高雄州潮州郡亦有一个内埔庄),现为后里区公所,于2001年6月13日公告为台中县县定古迹,后改为台中市直
  • 西惠特尔-洛斯涅托斯西惠提尔-洛斯涅托斯(英语:West Whittier-Los Nietos)是位于美国加利福尼亚州洛杉矶县的一个人口普查指定地区。西惠提尔-洛斯涅托斯的座标为33°58′34″N 118°04′08″W / 3
  • 经济剩余经济剩盈余是用于经济学的一种概念,可分为消费者盈余、生产者盈余,及两者加总形成的总盈余。消费者剩余(consumer surplus)是指购买者的支付意愿减去购买者的实际支付量。消费者
  • 努力号三桅帆船努力号(HMS Endeavor,又称为HM Bark Endeavor)是一艘排水量为368吨,可乘载94人的三桅帆船。詹姆斯·库克船长的第一次航行,便是指挥这艘船。在该次航行中,努力号于1768年8月由普利
  • GenusGenus (LSE:GNS)是英国的一家种畜公司。Genus是富时250指数成份股,总部位于贝辛斯托克。该公司有两个子公司,分别是生产种牛的ABS和生产种猪的PIC。Genus公司的前身是成立于193
  • 犁 (单位)犁是台湾的面积单位。明郑王朝以来的台湾开垦者,因多开垦农田,遂是以犁为单位,一犁为五甲,约等于台湾日治时期的14670坪,意即48496平方米。平方尧米、平方佑米(Ym²) 平方泽米、