银行家算法

算法思想

银行家算法:银行家算法是从当前状态出发,按照系统各类资源剩余量逐个检查各进程需要申请的资源量,找到一个各类资源申请量均小于等于系统剩余资源量的进程P1。然后分配给该P1进程所请求的资源,假定P1完成工作后归还其占有的所有资源,更新系统剩余资源状态并且移除进程列表中的P1,进而检查下一个能完成工作的客户,......。如果所有客户都能完成工作,则找到一个安全序列,银行家才是安全的。若找不到这样的安全序列,则当前状态不安全。

相关数据结构

  1. 可利用资源向量Available。这是一个含有m个元素的数组,其中的而每一个元素代表一类可利用资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态的改变。如果Available[j]=K,则表示系统中现有Rj类资源K个。

  2. 最大需求矩阵Max。这是一个n*m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K;则表示进程i需要Rj类资源的最大数目为K。

  3. 分配矩阵Allocation。这也是一个n*m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation[i,j]=K,则表示进程i当前已分得Rj类资源的数目为K。

  4. 需求矩阵Need。这也是一个n*m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成任务。

    上述三个矩阵间存在下述关系:Need[i,j]=Max[i,j]-Allocation[i,j]

例子

银行家算法实例

当前系统状态
从图中数据我们可以利用银行家算法的四个数据结构,来描述当前的系统状态:

因为系统总资源R=(17,5,20),所以可以计算出可利用资源向量Available=R-Allocation(P1,P2,P3,P4,P5)=(2,3,3)
分配资源
根据目前状态,用Available向量每一个进程的Need向量相比,发现Available>=P5.Need,所以可以将目前的资源分配给P5向量(P4也可以,不唯一)。当P5获得所需的所有向量后执行完毕,之后释放其占有的所有资源。此时更新系统资源:

Available=R-Allocation(P1,P2,P3)=(7,4,11)
按照上述同样的方法,P4 也可以安全运行,以及P3,P2,P1也能按顺序运行。因此,在T0时刻,存在安全序列:P5,P4,P3,P2,P1(并不唯一)

死锁避免算法--银行家算法相关推荐

  1. python银行家算法_Linux 死锁概念与银行家算法python 实现

    一 . 死锁的概念 接上篇 http://shaobaobaoer.cn/archives/680/linux-process-manager-note 在之前的哲学家吃饭的问题中,当每个哲学家都想进 ...

  2. 死锁预防之银行家算法

    死锁预防之银行家算法 死锁 死锁的定义 死锁的产生 死锁的描述 死锁避免算法 银行家算法 设计思想 分析 使用数据结构的描述 使用到的函数 主函数执行的流程 银行家算法的逻辑 完整的程序代码 运行结果 ...

  3. 操作系统常问面试问题 3 —— 死锁(deadlock)(产生的条件、死锁避免(银行家算法)、死锁检测)

    死锁(产生的条件.死锁避免(银行家算法).死锁检测) 死锁(deadlock) 1.定义 2.产生的条件 3.死锁避免 3.1.银行家算法 3.1.1.实现过程 4.死锁检测 5.死锁恢复 6.鸵鸟算 ...

  4. 数据结构与算法学习笔记15:最大流问题 / 二分图 / 有权无权二分图的匹配 / 匈牙利算法 / 银行家算法 / 稳定婚配

    数据结构与算法学习笔记15:最大流问题 / 二分图 / 有权无权二分图的匹配 / 匈牙利算法 / 银行家算法 / 稳定婚配 引入小题:最短路径 最大流问题(maximum flow problem) ...

  5. 系统架构设计师考试知识点整理-4:死锁问题、银行家算法、管程与线程

    死锁问题 1.死锁是指多个进程之间相互等待对方的资源,而在得到对方资源之前又不释放自己的资源所造成的循环等待的现象. 2.死锁产生的根本原因在于系统提供的资源少于并发进程所要求的该类资源数. 3.死锁 ...

  6. 避免死锁方法之银行家算法

    文章目录 死锁 银行家算法原理 银行家算法具体介绍 要介绍银行家算法应该先简单说一下死锁: 死锁 死锁概念:在线程间共享多个资源的时候,如果两个线程分别占有一部分资源并且同时等待对方的资源时,就会造成 ...

  7. 操作系统--死锁避免(银行家算法)

    可利用资源向量Available.这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态地改变.如果A ...

  8. 操作系统中死锁避免算法 --- 银行家算法

    1. 背景 在银行系统中, 客户完成项目需要申请贷款的数量是有限的, 每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量, 在满足所有贷款要求并完成项目时, 客户应及时归还. 银行家在客户申请 ...

  9. 操作系统之死锁的避免-银行家算法详解

    1.银行家算法中的数据结构   (1) 可利用资源向量Available.这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随 ...

最新文章

  1. 领跑交互新时代 蓦然认知助力传统产业智能化升级
  2. R语言笔记6:在R中写一些简单的函数、functions基础和作用域
  3. iscroll 滚动刷新
  4. sql 高级 (五)(create index(创建索引) drop)
  5. win10解决Mysql net start mysql启动,提示发生系统错误 5 拒绝访问
  6. 学习响应式BootStrap来写融职教育网站,Bootsrtap第七天PC端轮播图
  7. JulyNovel-React
  8. linux两个命令一起,paste命令 – 合并两个文件
  9. html 输入框 相加,JS中,如何实现两个输入框中内容的数字相加?
  10. 网络基础知识_你家的网络是这么布线的吗?家庭网络布线基础知识普及!
  11. 如何在苹果Mac上设置实时文本(RTT)?
  12. 红米10X/Pro/Note8Pro/Note9/K30U解账户锁详细刷机教程-可登小米账号
  13. 如何下载Xcode DMG或XIP文件?
  14. android其实很简单 -- roaster 以代码构建代码
  15. 计算机实验三—CPT
  16. spring多参java注解_spring参数注解校验
  17. 搭建自己的BT下载平台服务器
  18. EDA元器件封装导入allegro
  19. 10 竞争神经网络与SOM神经网络matlab参考程序
  20. linux内核顶层Makefile详解

热门文章

  1. python程序-30分钟学会用Python编写简单程序
  2. python日常能做什么-Python除了做AI、还能干啥?
  3. 学python买什么书-关于 Python 的经典入门书籍有哪些?(python三大经典书)
  4. 强大的端到端语音识别框架—RNN-T
  5. 百度AI语音语义一体化技术 识别的同时进行语义分析
  6. 数字语音识别 - 源码下载|数值算法/人工智能|matlab例程|源代码 - 源码中国
  7. 超级计算机运行吃鸡,决赛圈的时候,如果两个人同时被手雷炸死该怎么办呢?...
  8. java 编码格式 utf 8_关于java生成UTF-8编码格式文件的诡异问题
  9. createbitmap 旋转90度_如何旋转的位图90度
  10. Ajax-图书管理系统数据提交