1.银行家算法中的数据结构

  (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当前已分得R j类资源的数目为K。
  (4) 需求矩阵Need。这也是一个n×m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j]=K,则表示进程i还需要R j类资源K个,方能完成其任务。

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

2.银行家算法

  设Requestᵢ是进程Pᵢ的请求向量,如果Requestᵢ[j]=K,表示进程Pᵢ需要K个Rⱼ类型的资源。当Pᵢ发出资源请求后,系统按下述步骤进行检查:
  (1)如果Requestᵢ[j]<=Need[i, j],便转向步骤(2);否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。
  (2)如果Requestᵢ[j]<=Available[j],便转向步骤(3);否则,表示尚无足够资源,Pᵢ须等待。
  (3)系统试探着把资源分配给进程Pᵢ,并修改下面数据结构中的数值:

  (4)系统执行安全性算法,检查此次资源分配后系统是否处于安全状态。若安全,才正式将资源分配给进程Pᵢ,以完成本次分配;否则,将本次的试探分配作废,恢复原来的资源分配状态,让进程Pᵢ等待。

3.安全性算法

  (1)设置两个向量:①工作向量Work,它表示系统可提供给进程继续运行所需的各类资源数目,它含有m个元素,在执行安全算法开始时,Work=Available;②Finish:它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finish[i]:=false;当有足够资源分配给进程时,再令Finish[i]:=true。
  (2)从进程集合中找到一个能满足下述条件的进程:
   ①Finish[i]=false;
   ②Need[i, j]<=Work[j];
   若找到,执行步骤(3),否则,执行步骤(4)。
  (3)当进程Pᵢ获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行: .
   Work[j] = Work[j]+Allocation[i, j];
   Finish[i] =true;
   go to step 2;
  (4)如果所有进程的Finish[j]=true都满足,则表示系统处于安全状态;否则,系统处于不安全状态。

4.银行家算法之例

  假定系统中有五个进程{P₀,P₁, P₂,P₃, P₄}和三类资源{A, B, C},各种资源的数量分别为10、5、7,在T₀时刻的资源分配情况如下图所示所示。

  (1) T₀时刻的安全性:利用安全性算法对T₀时刻的资源分配情况进行分析(如下图所示)可知,在T₀时刻存在着一个安全序列{P₁, P₃, P₄,P₂,P₀},故系统是安全的。

  (2) P₁请求资源: P₁发出请求向量Request₁(1, 0, 2),系统按银行家算法进行检查:
   ①Request₁(1, 0, 2)<=Need₁(1, 2, 2);
   ②Request₁(1, 0, 2)<=Available₁(3, 3, 2);
   ③系统先假定可为P₁分配资源,并修改Available,Allocation₁和Need₁向量,由此形成的资源变化情况如本文图1中的圆括号所示;④再利用安全性算法检查此时系统是否安全,如下图所示。

  (3) P₄请求资源: P₄发出请求向量Request₄(3,3, 0), 系统按银行家算法进行检查:
   ①Request₄(3,3,0)<=Need₄(4,3,1);
   ②Request₄(3,3,0)> Available(2,3,0), 让P₄等待。
  (4) P₀请求资源: P₀发出请求向量Request₀(0, 2, 0),系统按银行家算法进行检查:
   ①Request₀(0,2,0)<=Need₀(7, 4, 3);
   ②Request₀(0,2, 0)<=Available(2,3,0);
   ③系统暂时先假定可为P₀分配资源,并修改有关数据,如下图所示。

  (5)进行安全性检查:可用资源Available(2,1, 0)已不能满足任何进程的需要,故系统进入不安全状态,此时系统不分配资源。

操作系统之死锁的避免-银行家算法详解相关推荐

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

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

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

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

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

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

  4. 银行家算法( 详解 )

    文章目录 一.什么是银行家算法? 二.银行家算法中的数据结构 三.流程图 四.代码实现 一.什么是银行家算法? 银行家算法是操作系统的经典算法之一,用于避免死锁情况的出现. 它最初是为银行设计的(因此 ...

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

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

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

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

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

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

  8. 计算机操作系统:实验2 【银行家算法】

    计算机操作系统:实验2 [银行家算法] 文章目录 计算机操作系统:实验2 [银行家算法] 一.前言 二.实验目的 三.实验环境 四.实验内容 五.实验说明 六.实验步骤 1. 认真理解好课本中银行家算 ...

  9. 分治算法详解(超详细)

    原 分治算法详解 分类专栏: 算法详解 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 原文链接: https://blog.csdn.net/effective_coder/a ...

最新文章

  1. JavaScript异步史
  2. SpringBoot整合Freemarker+Mybatis
  3. ajax基础学习笔记
  4. iOS应用间相互跳转
  5. KMP算法详解及各种应用
  6. [读书笔记]大型分布式网站架构设计与实践.分布式缓存
  7. design php 如何使用ant_Ant Design Pro初探—添加面包屑
  8. 使用 jQuery Mobile 与 HTML5 开发 Web App (十七) —— HTML5 离线缓存
  9. BigNums 之 hdu 1753
  10. 软件_linux命令cp目录路径和通配符
  11. windows系统bat批处理 清理注册表与蓝屏补丁
  12. Vert.x Web
  13. Android自定义控件之虚线的用法
  14. QuickFlow教程(14)—ExecuteCode using QuickFlowDesigner
  15. 如何用计算机算回归方程,简单线性回归方程与在线计算器_三贝计算网_23bei.com...
  16. 【暴强】200种好口碑便宜护肤品 - 生活至上,美容至尚!
  17. 阿里巴巴分布式消息系统的实践之路
  18. html背景图片拉伸解决办法
  19. Mybatis一对多和多对一联系处理
  20. 与文本内容无关的说话人识别概述——从特征到超矢量

热门文章

  1. openfire + spark + red5
  2. 2021全球与中国个人理财软件市场现状及未来发展趋势
  3. 天正安装autocad启动失败_天正打不开找不到可使用的AutoCAD版本如何解决?已经安装了CAD...
  4. 从无到有axure原型设计_从零开始学Axure原型设计(进阶篇)
  5. A Taxonomy and Evaluation of Dense Two-Frame Stereo Correspondence Algorithms
  6. mysql安装登录错误提示
  7. 量子物理史话,很好看
  8. 宇视摄像机运动检测配置步骤
  9. 医号馆个人诊所管理软件系统更新!
  10. 2018年刑侦科推理试题php版,2018年刑侦科目推理试题