银行家算法是Dijkstra为银行系统设计的,以确保银行在发放现金贷款时,不会发生不能满足所有客户需要的情况,后来被用于操作系统中,用于避免死锁

核心思想:在进程提出资源申请时,先预判此次分配是否会导致系统进入不安全状态,如果会进入不安全状态,就暂时不答应这次请求,让该进程先阻塞等待。

例:

进程 最大需求 已分配 最多还需要
P0 (7,5,3) (0,1,0) (7,4,3)
P1 (3,2,2) (2,0,0) (1,2,2)
P2 (9,0,2) (3,0,2) (6,0,0)
P3 (2,2,2) (2,1,1) (0,1,1)
P4 (4,3,3) (0,0,2) (4,3,1)

资源总数为(10,5,7),剩余可用资源(3,3,2)。

答:

先用剩余可用资源与最多还需要资源数一 一比较,将剩余可用资源分配给可以完成的进程。

与P0比较,(7,4,3)>(3,3,2)

与P1比较,(1,2,2)<(3,3,2),P1进程可以完成,P1结束归还资源,剩余可用资源增加到(5,3,2)。

与P2比较,(6,0,0)>(5,3,2)

与P3比较,(0,1,1)<(5,3,2),剩余可用资源增加到(7,4,3)。

再与P0比较,(7,4,3) = (7,4,3),剩余可用资源增加到(7,5,3)。

再与P2比较,(6,0,0)< (7,5,3),剩余可用资源增加到(10,5,5)。

与P4比较,(4,3,1)<(10,5,5),剩余可用资源增加到(10,5,7)。

最后可找出一个安全序列:{P1,P3,P0,P2,P4}。

注意:每一轮检查都是从编号较小的进程开始检查。

上一例题用更快方法找到一个安全序列:

剩余可用资源(3,3,2)可满足P1、P3,说明,无论如何,这两个进程的资源需求一定可以依次被满足,因此P1、P3一定可以执行完,并归还资源。

此时剩余可用资源(7,4,3)剩下的P0、P2、P4都可被满足。

说明此时系统处于安全状态,暂不可能发生死锁。

银行家算法数据结构:

1、长度为m的一维数组Available表示还有多少可用资源。

2、n*m矩阵Max表示各进程对资源的最大需求数。

3、n*m矩阵Allocation表示已经给各进程分配了多少资源。

4、Max-Allocation = Need矩阵表示各进程最多还需要多少资源。

5、用长度为m的一维数组Request表示进程此次申请的各种资源数。

银行家算法步骤:

1、检查此次申请是否超过了之前声明的最大需求数。

2、检查此时系统剩余的可用资源是否还能满足这次请求。

3、试探分配,更改各数据结构。

4、用安全性算法检查此次分配是否会导致系统进入不安全状态。

安全性算法步骤:

1、检查当前的剩余可用资源是否能满足某个进程的最大需求,如果可以,就把该进程加入安全序列,并把该进程持有的资源全部回收。

2、不断重复上述过程,看最终是否能让所有进程都加入安全序列。

注意:系统处于不安全状态未必死锁,但死锁时一定处于不安全状态,系统处于安全状态一定不会死锁。

【操作系统】-- 银行家算法相关推荐

  1. 操作系统——银行家算法(银行家和房地产开发商的爱恨情仇)

    操作系统--银行家算法 什么是银行家算法 银行家算法(Banker's Algorithm)是一个避免死锁(Deadlock)的著名算法,是由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计的一种避 ...

  2. 操作系统银行家算法计算机四级,【NCRE四级网络工程师】操作系统多选题

    友情提示:此篇文章大约需要阅读 7分钟54秒,不足之处请多指教,感谢您的阅读. 保存在进程控制块中的是 进程标识符 进程当前状态 代码段指针 PCB的内容可以分为调度信息和现场信息两大部分.调度信息供 ...

  3. 操作系统 | 银行家算法及代码实现

    参考博客 [操作系统]死锁避免之银行家算法_少侠露飞的学习笔记-CSDN博客 [操作系统]避免死锁--银行家算法_明昕ztoy的博客-CSDN博客_银行家算法避免死锁 实现思路 当一个进程申请使用资源 ...

  4. 操作系统-银行家算法(Java实现)

    一.银行家算法思想 银行家算法是最著名的死锁避免算法,其思想是:将操作系统视为银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款.操作系统按照银行家制定 ...

  5. [操作系统] 银行家算法

    文章目录 安全序列 通俗理解模型 初始借完钱 分析借钱的安全序列 银行家算法 核心思想 资源表示 安全性算法分析系统状态 银行家算法实现 思路分析 银行家算法步骤 安全性算法步骤 升华思维 安全序列 ...

  6. c语言银行家算法模拟程序,C语言实现 操作系统 银行家算法

    /**************************************************** 银行家算法 算法思想: 1. 在多个进程中,挑选资源需求最小的进程Pmin, 可能存在多类资 ...

  7. 银行家算法 计算机操作系统,计算机操作系统 银行家算法.doc

    银行家算法 //breaker.h文件代码 #include using namespace std; int Test_Request(int *,int *); //测试函数 void Assig ...

  8. 计算机操作系统——银行家算法

    1.实验目的: 银行家算法是由Dijkstra设计的最具有代表性的避免死锁的算法.本实验通过编写一个模拟动态资源分配的银行家算法程序,进一步深入理解死锁.产生死锁的必要条件.安全状态等重要概念,并掌握 ...

  9. 操作系统 银行家算法及相关例题

    银行家算法 Dijkstra的银行家算法是最具有代表性的避免死锁的算法,这个算法因能用于银行系统现金贷款的发放而得名. 安全状态 所谓安全状态,是指系统能按某种进程顺序(P1,P2,-,Pn)(称&l ...

  10. 操作系统——银行家算法的模拟实现

    一.实验目的 (1)理解银行家算法. (2)掌握进程安全性检查的方法与资源分配的方法. 二.实验内容与基本要求 编制模拟银行家算法的程序,并给出一个例子验证所编写的程序的正确性. 要求例子中包含分配安 ...

最新文章

  1. treeview控件怎么使用修改发育树_树形控件在生产力工具中的设计
  2. python 代理使用方法简介
  3. 在线录音机 html5,recorder
  4. 1014冒泡排序文法推导
  5. Microsoft SharePoint Portal Server 2003 订制开发研讨(流水帐)
  6. ssh配置文件ssh_config和sshd_config区别
  7. 谈谈对python 和其他语言的区别_谈谈Python和其他语言的区别
  8. Asp.Net Core SignalR 用泛型Hub优雅的调用前端方法及传参
  9. flink fi java_Flink DataStream API编程指南
  10. 2021年用独立站铁赚的四种模式
  11. 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载 【转】...
  12. MDUI登陆注册案例
  13. 全链路压测及阿里全链路压测详解
  14. ITIL学习笔记——ITIL入门小知识
  15. 汉诺塔的图解递归算法
  16. Redis:列表LPUSH、LPUSHX、RPUSH、RPUSHX、LPOP、RPOP命令介绍
  17. adb连接雷电模拟器失败
  18. 2020计算机考试内容,2020年全国计算机二级OFFICE考试内容
  19. python修改pdf文件名称_使用Python重命名pdf文件目录几乎可以工作
  20. MetaWork:拜托,这样远程结对编程超酷的

热门文章

  1. 【微信小程序开发】自定义tabBar案例(定制消息99+小红心)
  2. 小白易懂的遗传算法(Python代码实现)
  3. Android 8.0 RIL框架分析
  4. 如何做到输入一个英语句子,将句中单词分行打印输出
  5. ElasticSearch系列18:Mapping 设计指南
  6. jvm 崩溃日志设置_JVM崩溃的原因及解决过程
  7. 制作无盘Windows2003之无忧Ghost文件(转)
  8. 《数据库系统原理与设计》万常选著知识点整理
  9. WHAT is SLA
  10. 解决:fatal: Authentication failed for ‘https://github.com/xxxx/git-demo.git/‘