【OS】Bankers Algorithm 用于调用的参数太少/写入位置时发生冲突/检测到无效的异常处理程序例程 后渗透之各种维持权限的后门原理即利用 MIPS Branch Target Buffer动态分支预测(BTB) Oracle实战优化:INSERT ALL关键字的应用 Linux中MySQL数据库的使用②-----数据的基本操作 理论+实验——MySQL备份与恢复 MySQL常用数据库函数 MySQL 备份与恢复(完全备份恢复--增量备份恢复+案例演示) MySQL之基础总结部分 Oracle实战优化:递归+分析函数+OLAP函数的应用 Linux中MySQL数据库的使用③-----编码和基本数据类型 理论+实验:MySQL备份与恢复(完整备份、增量备份) “数”聚永川 “智”引未来——永川区大数据智能化产业发展强劲 从一款防疫App感受新加坡大数据智能化气息 “数”聚永川“智”引未来——永川区大数据智能化产业发展强劲 从连接量变到数据质变 物联网将二次爆发 重磅发布!猎芯半导体首创全球最小支持5G物联网的多模多频射频PA芯片 从精准授信到助企惠民,江苏银行物联网金融派上大用场 Python Selenium UI自动化_WebDriver元素_8大定位方式+总结(持续更新完善) Python中的继承、抽象基类和接口 Datawhale学习笔记【阿里云天池 金融风控-贷款违约预测】task1 赛题理解 Pytorch - torchvision计算机视觉工具库 linux 重点笔记 Ubuntu18.04安装ROS Melodic(一路到站型) 小甲鱼笔记:数据结构——线性表(一)线性表的顺序存储结构,线性表顺序存储结构的增,删,插入元素操作 实战比特币脚本编程(1) JAVA WEB DAY 01_Tomcat & Servlet Java基础算法之堆排序(Heap Sort) synchronized批量重偏向与批量撤销 终于等到了!阿里P8历时九个月整理,Java面试宝典,核心知识点笔记在此 “数字心脏”动态解析消费密码,国家级消费市场大数据联合实验室在上海先行先试 全世界运行着大约230亿台物联网设备,安全问题如何解? 物联网产业园&thinkplus解决方案中心国学讲座如期而至 都是程序员,凭什么他能站在鄙视链的顶端? 猛男必看!去小红书做程序员是种什么体验 drozer提示[Errno 2] No such file or directory 【STM32】NB-iOT BC35-G模块 AT指令应用设计指导(附代码) 【北京迅为】i.MX6ULL终结者编译LED汇编程序 Linux系统读写网卡PHY寄存器工具 洛谷:P1226 【模板】快速幂||取余运算(分治,数学) 【2020顶会KDD】AutoST:面向时空预测的高效神经网络学习模型 C/C++实现并查集disjoint_set的模板(带路径压缩优化) 实现一个百万级推送服务,除了它,还有谁 “健康守护者”——STM32标准库和HAL库的比较 程序员被公司辞退12天后,前领导要求回公司讲清代码,结果懵了 RTTR实现C++反射(1)集成rttr库 lotus node 远程运行 CCF历年4,5题收录 N卡 RTX3070/RTX3080/RTX3090挖矿算力推测 最高算力86MH
您的位置:首页 >开发 >

【OS】Bankers Algorithm

文章目录

数据结构.向量.系统安全测试算法.资源请求算法.实例一.解答.实例二.解答.

数据结构.

n:整型,进程数量;m:整型,资源类型的种类数;Available[m]:一维数组,保存[1…m]每种资源的可用实例数量;Max[n][m]:n×m矩阵,Max[i][j]表示i号进程对于j号资源的总需求量;Allocation[n][m]:n×m矩阵,Allocation[i][j]表示i号进程已经持有的j号资源数量;Need[n][m]:n×m矩阵,Need[i][j]表示i号进程还需要的j号资源数量。

向量.

对于两个长度为n的向量 XXX和 YYY,当且仅当 X [ i ] < Y [ i ]X[i]<Y[i]X[i]<Y[i]对于所有的 i ∈ [ 1.. n ]i∈[1..n]i∈[1..n]都成立时,我们说 X < Y .X<Y.X<Y.

系统安全测试算法.

用于测试系统此时是否处于安全状态,算法如下:
TestSafety(){//1.Work[1..m]=Available[1..m];//向量Work初始化为当前可用资源实例数向量.Finish[1..n]=false;//向量Finish每个分量都为false,表示初态都是未完成.//2.change=true;//循环控制变量.while(change){//Need[i]表示矩阵的第i行,也就是进程Pi所需资源数向量,//若进程Pi未完成,并且需求能够得到满足,就执行Pi,后续//释放其中的资源,等价于Work获得Pi已经持有的资源数向量//Allocation[i].change=false;for(int i=1;i<=n;++i){if(Finish[i]==false && Need[i]<Work) {Work=Work+Allocation[i];Finish[i]=true;change=true;}}}//不动点算法:只有当Finish和Allocation不再发生改变时,//也就意味着所有的进程都已经完成或者剩余进程都无法运行//这两种情况之一发生时,才会跳出while循环.//3.for(int i=1;i<=n;++i){if(Finish[i]==false){return false;}}return true;//全真为真,一假俱假.}

资源请求算法.

Request[n][m]:n×m矩阵,Request[i][j]表示i号进程此时申请的j号资源数量。
if(Request[i]<Need[i]){if(Request[i]<Available){//Simulate allocation.Available=Available-Request[i];Allocation[i]=Allocation[i]+Request[i];Need[i]=Need[i]-Request[i];if(TestSafety()){Agree Allocation;//System safe,just allocate.}else{Rollback;//System unsafe,rollback.}}else{Wait;//Cause resource insufficient.}}else{Error;//Cause request too many resources.}

实例一.

在这里插入图片描述

此时系统是否处于安全状态?如果进程 P1 P_1P1​提出资源请求 R e q u e s t1= ( 1 , 0 , 2 )Request_1 =(1, 0, 2)Request1​=(1,0,2),能满足吗?如果进程 P0 P_0P0​提出资源请求 R e q u e s t0= ( 0 , 2 , 0 )Request_0 =(0, 2, 0)Request0​=(0,2,0) ,能满足吗?如果进程 P4 P_4P4​提出资源请求 R e q u e s t4= ( 3 , 3 , 0 )Request_4 =(3, 3, 0)Request4​=(3,3,0) ,能满足吗?

解答.

在这里插入图片描述 在这里插入图片描述

实例二.

2、考虑系统T0时刻的状态如下所示:

AllocationMaxAvailableA B C DA B C DA B C D P0 P_0P0​0 0 1 20 0 1 21 5 2 0 P1 P_1P1​1 0 0 01 7 5 0 P2 P_2P2​1 3 5 42 3 5 6 P3 P_3P3​0 6 3 20 6 5 2 P4 P_4P4​0 0 1 40 6 5 6需求矩阵Need的内容如何?此时刻该系统是否处于安全状态?若此时 P1 P_1P1​请求资源 R e q u e s t1= ( 0 , 4 , 2 , 0 )Request_1=(0,4,2,0)Request1​=(0,4,2,0),系统是否满足其请求?为什么?

解答.

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。