银行家算法( banker's algorithm )由 Dijkstra(1065)提出。他将死锁的问题演示为一个银行家贷款的模型。
一个银行家向一群客户发放信用卡,每个客户有不同的信用额度。每个客户可以提出信用额度内的任意额度的请求,直到额度用完后再一次性还款。银行家承诺每个客户最终都能获得自己需要的额度。
所谓“最终”,是说银行家可以先挂起某个额度请求较大的客户的请求,优先满足小额度的请求,等小额度的请求还款后,再处理挂起的请求。这样,资金能够永远流通。
银行家算法可以用以下图表表示:

每个客户和银行家都有交易限额。银行家只能和限额小于自己限额的客户进行交易。一旦银行家的限额小于所有客户的限额,便发生了死锁。
如上图所示。银行家分别和客户1,客户2,客户3进行了交易。第一次交易时,所有客户的限额都小于银行家的限额,任何客户都可以实现借款;第二次交易时,客户3的限额大小银行家的限额,这时银行家会挂起客户3 的请求;第三次交易时,只有客户3可以进行交易,其它的交易都会被挂起。直到客户3还款后,银行家才会考虑处理其它客户的交易。

银行家算法其核心是:保证自己的限额至少不小于一个客户的限额。
我们可以用填表法来快速解决银行家算法。

建立一个二维表格:每列数据表示每次交易各个参与者的限额。这个表格第一列数据是银行家是客户的交易限额,每发生一次交易,增加一列,同时将银行家和发生交易的客户的限额减小。直到银行家的限额小于某个客户的限额时,交易不能继续进行。否则便发生死锁。

例题:
1、操作系统分配资源时的一个重要考虑是避免死锁的发生.若系统中有同类资源 16 个,由四个进程 P1、P2、P3 和 P4 共享该资源。已知 P1、P2、P3、P4 所需的资源总数分别为 8、5、9、6。各进程请求资源的次序如下表,若系统采用银行家算法为它们分配资源,那么_(1)__依次申请分配会使系统进入不安全状态。
进程申请资源的情况

序号 进程 申请量
1 P1 6
2 P2 4
3 P3 5
4 P4 1
5 P1 1
6 P2 1
A.3、4 B.3、5 C.4、5 D.5、6

答案是c
我们初始化一个二维表格

到完成第三个请求到达的时候,资源只有一个了。此时只能满足p2的请求。所以,第四个和第五个请求会被系统挂起。第六个请求p2到达后会被处理。等p2事务结束释放资源后,系统会再处理挂起的请求,这样就不会发生死锁。一旦在第三步后将剩下的唯一的一个资源分配给其它的进程,(如请求4或请求5),则请求4和5可能会因需要不止一个资源而继续等待,则发生了死锁。

填表法解“银行家算法”问题相关推荐

  1. matlab中枝切法解包裹,一种基于改进枝切法的激光散斑相位解包裹方法与流程

    本发明属于激光散斑干涉测量领域,涉及一种激光散斑相位解包裹方法. 背景技术: 散斑干涉相位图解包裹是激光散斑测量的关键步骤,Goldstein枝切法解包裹算法由于可识别残差点,防止误差传递,解缠精度高 ...

  2. 操作系统之银行家算法—详解流程及案例数据

    操作系统之进程调度--优先权法和轮转法(附上样例讲解) 操作系统之银行家算法-详解流程及案例数据 操作系统之多线程编程-读者优先/写者优先详解 操作系统之存储管理--FIFO算法和LRU算法 操作系统 ...

  3. Math.Round默认采用的不是四舍五入法, 而是四舍六入的银行家算法, 如何找回四舍五入法?...

    Math.Round默认采用的不是四舍五入法, 而是四舍六入的银行家算法,  也就是四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍 去,五前为奇要进一, 这个算法比四舍五入更精确些. R ...

  4. 光学算法——经典枝切法(解包裹算法)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 注:本文所讲内容为本人硕士毕业论文:<基于干涉图像质量分析的激光干涉仪抗振技术研究> ...

  5. python银行家算法例题详解_攒人品之作-能考408大题的知识点整理(有两个知识点的补充)...

    本帖最后由 wudi971 于 2014-1-5 17:47 编辑 ::98::明年出题那么综合,我对不起大家...::116:: 经过陈123同学的提醒,补充两个知识点: 组成原理的微指令的设计以及 ...

  6. 解魔方算法/Thislethwaite解魔方算法/降群法

    0.前言 主流的魔方解法,从入门的层先法,到进阶的CFOP.桥式乃至盲拧,都是从部分到整体的思路,逐块逐层还原魔方.但是Thislethwaite法不同,Thislethwaite法从整体出发,不断降 ...

  7. 计算机操作系统——银行家算法详解(C语言版)

    目录 一.实验目的 二.实验内容 三.实验要点说明 数据结构 银行家算法bank()函数 安全性算法safe()函数 银行家算法实例 程序结构 四.实验代码 五.结果展示 一.实验目的 通过编写一个模 ...

  8. 7-3 银行家算法--综合 (50 分)(思路+详解+分析输入)宝宝们 加油

    一:前言 这道题涉及到 银行家算法的申请资源 算法 还有 安全性检查的耍算法 那么强烈建议 把前面的学完再看本题 7-1 银行家算法–安全性检查 (20 分) 7-2 银行家算法–申请资源 (30 分 ...

  9. [OS] 死锁相关知识点以及银行家算法详解

    因此我们先来介绍一下死锁: 死锁特征 当出现死锁时,进程永远不能完成,并且系统资源被阻碍使用,阻止了其他作业开始执行.在讨论处理死锁问题的各种方法之前,先深入讨论一下死锁的特征. ·必要条件 (1)互 ...

最新文章

  1. 再议.Net中null的使用规范
  2. 经典C语言程序100例之六三
  3. 如何节约数据中心空间
  4. Xcode版本更新后插件失效解决办法
  5. Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity)
  6. thinkphp3.2.3版本的数据库增删改查实例
  7. 【局部敏感度的问题代码实现】差分隐私代码实现系列(八)
  8. python实现字母的加密和解密 字典_python实现AES加密与解密
  9. vs2008 MFC类继承结构
  10. 如何配置cmd操作XAMPP中的MYSQL的运行环境?
  11. 硬件找工作笔试题、面试题,求职offer指导规划
  12. #多源数据融合#:HSI与Lidar
  13. spotlight on oracle
  14. RenderDoc 调试web
  15. 面向企业服务,网易智企的深耕与拓进
  16. 口腔实验室5s管理实施内容办法
  17. 注册表修改备用dns服务器地址,备用dns的服务器地址是多少_电脑备用dns服务器地址怎么查看...
  18. 【SQL注入漏洞-07】堆叠查询靶场实战
  19. vbox 虚拟机访问网络,各个虚拟机实现互通
  20. 攻防世界forgot——让人眼花目眩的一道题(详细菜鸡向)

热门文章

  1. SolrCloud集群的安装使用以及Zookeeper的介绍
  2. Linux:cpufreq
  3. 并发运行linux,linux | 并发编程网 – ifeve.com
  4. 结构体03:结构体指针
  5. MySQL二十八规范数据库设计
  6. 输出华氏-摄氏温度转换表(15分)
  7. Angular 响应式表单 patchValue和setValue
  8. THREEJS - 获取场景中模型数据
  9. Http请求头+请求方式+状态码
  10. 阿里云成为国内首个时序数据库标准工作组成员