银行家算法

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

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

相关

  • 仑目雷姆(全称为人体伦琴当量,英语:roentgen equivalent man,符号为rem)为辐射剂量当量的单位,相当于一伦琴的X光射线或伽码射线。1956年国际放射防护委员会把放射性工作人员的防护标
  • 植物配种植物配种(英语:Plant breeding)是指透过改变植物的特征而产生所期望的特性的艺术和科学。植物配种现使用于为人类和动物改善产品中营养的品质。
  • 乏核燃料乏核燃料是经受过辐射照射、使用过的核燃料,通常是由核电站的核反应堆产生。这种燃料无法继续维持核反应。乏核燃料中仍然包含有大量的放射性元素,因此具有放射性,如果不加以妥
  • 呋喃糖呋喃糖(英文:Furanose)是一种糖,用于总称碳水化合物所具有的化学结构,其中包含一个由四个碳原子和1个氧原子所组成的五元环状结构。呋喃糖是呋喃的衍生物,但是呋喃糖环没有双键
  • 宫古群岛宫古群岛(日语:宮古列島/みやこれっとう Miyako Rettō)为琉球列岛西部的岛屿群,位于钓鱼台群岛和八重山群岛的东方。在日本的划分中和八重山群岛、钓鱼台群岛合称为先岛群岛。
  • 去吧,摩西《去吧,摩西》(英语:Go Down, Moses)是威廉·福克纳的一部长篇小说,1942年5月11日出版。小说由从属于同一主题的多篇故事组成,讲述了麦卡斯林家族的命运。这个家族是约克纳帕塔法
  • 3d104s24p3 2, 8, 18, 5蒸气压 第一:947.0 kJ·mol−1 第二:1798 kJ·mol−1 第三:2735 kJ·mol−1 主条目:砷的同位素 砷(Arsenic),化学元素符号为As,原子序数为33。砷分布在多
  • 奥斯特利茨战役奥斯特利茨战役(1805年12月2日),是拿破仑战争中的一场著名战役。75,000人的法国军队在拿破仑的指挥下,在波西米亚的奥斯特利茨村(位于今捷克境内)取得了对87,000俄罗斯-奥地利联军
  • 纳粹大屠杀中的儿童纳粹集中营转移营比利时:布伦东克堡垒 · 梅赫伦转移营法国:居尔集中营 · 德朗西集中营意大利:波尔查诺转移营荷兰:阿默斯福特集中营 · 韦斯特博克转移营挪威:法斯塔德集中营部
  • 良心时代运动良心时代运动(英语:An Era of Conscience),由世界之爱和平总会于2014年1月1日共同发起。2014年2月16日在台湾、美国、加拿大、澳洲、荷兰等全球25地连线举办,号召各界人士透过影