操作系统之银行家算法解析
操作系统之银行家算法解析(带例题)
利用银行家算法避免死锁,首先我们先来明晰一下银行家算法的数据结构,其中必须设置四个数据结构,Available,Max,Allocation,Need.
Available,又名可利用资源向量,顾名思义即资源中可利用的数目。
Max,最大需求矩阵,Allocation 分配矩阵,Need需求矩阵。
后三者关系即为:Need=Max-Allocation。
首先我们来看一道例题
第一题该状态是否安全?
要求是列出安全性算法检查表
首先本题的最终目的是得到一个表,来看一下
简单讲一下安全性算法的简单理解,就是Available中有没有现在可以满足p0-p4其中一个的需求,也就是可用是否大于某一些需求?可以看出Available满足P0 Need,接下来分配给P0,1C和2D(资源默认ABCD),此时P0可以执行,然后并且会返回给Available3C和2D,此时的Available的资源就变成了1554。
以此类推
用相同的方法可以找出序列P0、P3、P1、P2、P4可以依此执行,并不会出现available<need的情况,故安全序列{P0、P3、P1、P2、P4},故系统是安全的。
附上最后的安全性算法检查表
下面来看第二题
系统发出了request请求,request请求只出现在了银行家算法里,所以用银行家算法里的四步来分别求解
第一步如果request<=Need才可进行第二步,否则出错
第二步如果request<=Available才可进行第三步,否则出错
第三步分配资源给request
available=available-request;
allocation=allocation+request;
need=need-request;
看题目故
①Request2(1,2,2,2)<=Need2(2,3,5,6)
②Request2(1,2,2,2)<=Available(1,5,2,2)
③系统先假定可为P2分配资源,并修改Available,Allocation2和Need2向量:
Available=(0,3,0,0) Allocation2=(2,5,7,6) Need2=(1,1,3,4)
④进行安全性检查,即第一题的检查,此时对所有的进程,条件Need<=Available(0,3,0,0)都不成立,即Available不能满足任何进程的请求,故系统进入不安全状态。此时当进程P2提出请求Request(1,2,2,2)后,系统不能将资源分配给它。
接下来第三题:
系统立即满足进程P2的请求(1,2,2,2)后,并没有马上进入死锁状态。因为,此时上述进程并没有申请新的资源,并进入阻塞状态。只有当上述进程提出新的请求,并导致所有没有执行完的多个进程因得不到资源而阻塞时,系统才进入死锁状态。
操作系统之银行家算法解析相关推荐
- 操作系统之银行家算法—详解流程及案例数据
操作系统之进程调度--优先权法和轮转法(附上样例讲解) 操作系统之银行家算法-详解流程及案例数据 操作系统之多线程编程-读者优先/写者优先详解 操作系统之存储管理--FIFO算法和LRU算法 操作系统 ...
- 操作系统 进程调度-银行家算法实验报告
实验要求 一. 实验目的 死锁会引起计算机工作僵死,因此操作系统中必须防止.本实验的目的在于让学生独立的使用高级语言编写和调试一个系统动态分配资源的简单模拟程序,了解死锁产生的条件和原因,并采用银行家 ...
- 计算机操作系统实验银行家算法,实验六 银行家算法(下)
实验六 银行家算法(下) 一.实验说明 实验说明:本次实验主要是对银行家算法进行进一步的实践学习,掌握银行家算法的整体流程,理解程序测试时每一步的当前状态,能对当前的资源分配进行预判断. 二.实验要求 ...
- 【计算机操作系统】银行家算法的模拟实现
文章目录 前言 1 实验相关知识理论 1.1 死锁的概念 1.2 产生死锁的原因 1.3 避免死锁的方法 1.4 解除死锁的方法 2 实验设计思路 3 实验设计涉及到的数据结构 4 程序算法设计 4. ...
- 操作系统-资源分配银行家算法
资源分配----银行家算法 一. 实验目的 模拟实现银行家算法,用银行家算法实现资源分配和安全性检查.通过本次实验,使学生加深对死锁概念的理解和掌握,并培养学生对操作系统课程的兴趣与高级语言设计的能力 ...
- 操作系统知识——银行家算法
用自己理解的语言描述,如有错误,请疯狂打脸没关系,希望能够指出来. 0. 主要思想 分配资源之前,判断系统是否安全. 银行家算法是一种资源分配和避免死锁的算法,它通过模拟所有资源的分配方式来测试安全性 ...
- 计算机操作系统_银行家算法
银行家算法 什么是银行家算法? 银行家算法(Banker's Algorithm)是一个避免死锁(Deadlock)的著名算法,是由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计的一种避免死锁产生 ...
- 【操作系统】-- 银行家算法
银行家算法是Dijkstra为银行系统设计的,以确保银行在发放现金贷款时,不会发生不能满足所有客户需要的情况,后来被用于操作系统中,用于避免死锁. 核心思想:在进程提出资源申请时,先预判此次分配是否会 ...
- 【操作系统】银行家算法:算法分析 + 运行结果 + 完整代码
学习网站推荐:前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站 一.银行家算法 可利用银行家算法避免死锁,请设计银行家算法,参考教材依据教材<计算 ...
最新文章
- 2021CVPR顶会冠军带你解密图像分割
- dw可以编辑java吗_为什么很多人说 Java 不适合编写桌面应用?
- Service和Thread的关系
- 深拷贝拯救指针重复释放(浅拷贝)造成的内存泄漏
- workerman mysql_workerman/mysql
- 素数方阵(信息学奥赛一本通-T1446)
- 照片转换为动画 html5,如何使用html5让图片转圈的动画效果
- (208)ASIC开发总结
- “9元课程”拼凑起来的暑假和K12在线教育企业的生死营销战
- Motan:目录结构
- POJ1742Coins
- 人脸检测用什么模型_人脸检测模型:使用哪个以及为什么使用?
- 虹软人脸识别java调用依赖Cant‘t find dependent library错误,需安装vc2013运行环境
- Chrome离线安装Axure插件
- Oracle 日志解析ogg,对一段OracleGoldenGate(OGG)传输进程日志(.rpt文件)的解
- 学习java第15天
- 2017IMO第五题
- 一个屌丝程序猿的人生(二十二)
- 推荐2个适合程序员使用的显示器
- Http升级到Https (本地测试,无须域名和认证)
热门文章
- hdfs 指令_HDFS常用命令操作
- 当心! 二代身份证可能导致身份信息泄露
- 语言const的生命周期_第3课-进化后的const分析
- python多机器并行_Python多任务并行
- matlab如何读取excel文件中的数据?_Python自动化之从Excel文件读取数据
- react实现汉堡_React全家桶实战
- Docker 学习笔记-08:Dockerfile
- 深入理解电源纹波与噪声并正确测量简述
- 无法检索数据和目标数据的列信息_使用AnalyticDB轻松实现以图搜图和人脸检索...
- ABB机器人与c#程序socket通信连接不上解决方法