【操作系统】-- 银行家算法
银行家算法是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、不断重复上述过程,看最终是否能让所有进程都加入安全序列。
注意:系统处于不安全状态未必死锁,但死锁时一定处于不安全状态,系统处于安全状态一定不会死锁。
【操作系统】-- 银行家算法相关推荐
- 操作系统——银行家算法(银行家和房地产开发商的爱恨情仇)
操作系统--银行家算法 什么是银行家算法 银行家算法(Banker's Algorithm)是一个避免死锁(Deadlock)的著名算法,是由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计的一种避 ...
- 操作系统银行家算法计算机四级,【NCRE四级网络工程师】操作系统多选题
友情提示:此篇文章大约需要阅读 7分钟54秒,不足之处请多指教,感谢您的阅读. 保存在进程控制块中的是 进程标识符 进程当前状态 代码段指针 PCB的内容可以分为调度信息和现场信息两大部分.调度信息供 ...
- 操作系统 | 银行家算法及代码实现
参考博客 [操作系统]死锁避免之银行家算法_少侠露飞的学习笔记-CSDN博客 [操作系统]避免死锁--银行家算法_明昕ztoy的博客-CSDN博客_银行家算法避免死锁 实现思路 当一个进程申请使用资源 ...
- 操作系统-银行家算法(Java实现)
一.银行家算法思想 银行家算法是最著名的死锁避免算法,其思想是:将操作系统视为银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款.操作系统按照银行家制定 ...
- [操作系统] 银行家算法
文章目录 安全序列 通俗理解模型 初始借完钱 分析借钱的安全序列 银行家算法 核心思想 资源表示 安全性算法分析系统状态 银行家算法实现 思路分析 银行家算法步骤 安全性算法步骤 升华思维 安全序列 ...
- c语言银行家算法模拟程序,C语言实现 操作系统 银行家算法
/**************************************************** 银行家算法 算法思想: 1. 在多个进程中,挑选资源需求最小的进程Pmin, 可能存在多类资 ...
- 银行家算法 计算机操作系统,计算机操作系统 银行家算法.doc
银行家算法 //breaker.h文件代码 #include using namespace std; int Test_Request(int *,int *); //测试函数 void Assig ...
- 计算机操作系统——银行家算法
1.实验目的: 银行家算法是由Dijkstra设计的最具有代表性的避免死锁的算法.本实验通过编写一个模拟动态资源分配的银行家算法程序,进一步深入理解死锁.产生死锁的必要条件.安全状态等重要概念,并掌握 ...
- 操作系统 银行家算法及相关例题
银行家算法 Dijkstra的银行家算法是最具有代表性的避免死锁的算法,这个算法因能用于银行系统现金贷款的发放而得名. 安全状态 所谓安全状态,是指系统能按某种进程顺序(P1,P2,-,Pn)(称&l ...
- 操作系统——银行家算法的模拟实现
一.实验目的 (1)理解银行家算法. (2)掌握进程安全性检查的方法与资源分配的方法. 二.实验内容与基本要求 编制模拟银行家算法的程序,并给出一个例子验证所编写的程序的正确性. 要求例子中包含分配安 ...
最新文章
- treeview控件怎么使用修改发育树_树形控件在生产力工具中的设计
- python 代理使用方法简介
- 在线录音机 html5,recorder
- 1014冒泡排序文法推导
- Microsoft SharePoint Portal Server 2003 订制开发研讨(流水帐)
- ssh配置文件ssh_config和sshd_config区别
- 谈谈对python 和其他语言的区别_谈谈Python和其他语言的区别
- Asp.Net Core SignalR 用泛型Hub优雅的调用前端方法及传参
- flink fi java_Flink DataStream API编程指南
- 2021年用独立站铁赚的四种模式
- 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载 【转】...
- MDUI登陆注册案例
- 全链路压测及阿里全链路压测详解
- ITIL学习笔记——ITIL入门小知识
- 汉诺塔的图解递归算法
- Redis:列表LPUSH、LPUSHX、RPUSH、RPUSHX、LPOP、RPOP命令介绍
- adb连接雷电模拟器失败
- 2020计算机考试内容,2020年全国计算机二级OFFICE考试内容
- python修改pdf文件名称_使用Python重命名pdf文件目录几乎可以工作
- MetaWork:拜托,这样远程结对编程超酷的
热门文章
- 【微信小程序开发】自定义tabBar案例(定制消息99+小红心)
- 小白易懂的遗传算法(Python代码实现)
- Android 8.0 RIL框架分析
- 如何做到输入一个英语句子,将句中单词分行打印输出
- ElasticSearch系列18:Mapping 设计指南
- jvm 崩溃日志设置_JVM崩溃的原因及解决过程
- 制作无盘Windows2003之无忧Ghost文件(转)
- 《数据库系统原理与设计》万常选著知识点整理
- WHAT is SLA
- 解决:fatal: Authentication failed for ‘https://github.com/xxxx/git-demo.git/‘