操作系统 | 银行家算法举例
2021/12/30 14:07:29
本文主要是介绍操作系统 | 银行家算法举例,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
举例说明:“若系统状态目前是安全的,若对某个申请评估时 在假定分配状态中,只要找到一个可满足线程就可断定系统是安全的”结论是错的。请构造一个例子进行证明。
例:在银行家算法中,若出现下述分配情况,试问:
若进程P2提出请求Request(1,2,2,2)后,系统能否将资源分配给它?
答:不能,按照银行家算法,首先检查Requesti [j] 是否小于等于 Need[i,j],在这里(1,2,2,2) < (2,3,5,6)满足条件,则再判断Requesti [j] 是否小于等于 Available[j],这里(1,2,2,2) <(1,6,2,2)满足!此时找到了一个可满足进程。
然后便试探性的将资源分配给P2,此时P2的Allocation项变为(2,5,7,6),Need项变为(1,1,3,4),Available项变为(0,4,0,0)必须执行安全性算法,第一步就发现找不到一个进程使得Need[i,j] <= Work[j];所以安全性检查失败,这个Request请求会造成死锁,系统将处于不安全状态,故本次试探分配作废,恢复原来的资源分配状态,让进程P2等待。故“只要找到一个可满足线程就可断定系统是安全的”是错误的。
笔记:
1.多个进程: { P0,P1,P2,P4 } 代表1,2,3,4四个需要临界资源的进程
2.几种资源:{ A, B ,C } 代表A,B,C三种临界资源
3.Claim:最大需求矩阵(进程完成执行需要的各资源总量)
Allocation:分配矩阵(某个进程现在已经拥有的各资源量)
Need:需求矩阵(某个进程仍需要的各资源量)
Available:可利用资源向量 (系统保有的供分配的资源量)
其中:Need = Max - Allocation ,仍然需要的量等于总需求量减去拥有的量
当进程请求一组资源时,假设同意该请求,从而改变了系统的状态,然后确定其结果是否还处于安全状态。如果是,同意这个请求;如果不是,阻塞该进程知道同意该请求后系统状态仍然是安全的。
这篇关于操作系统 | 银行家算法举例的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-0600-macOS和Linux安装和管理多个Python版本
- 2024-03-30[译]漫画SELinux概念
- 2024-03-29linux 移动文件
- 2024-03-28linux .so file
- 2024-03-28Linux 磁盘管理
- 2024-03-28Linux学习笔记(十三)磁盘管理(一):磁盘分区
- 2024-03-26linux 创建 文件
- 2024-03-25使用SecureCRT对Linux vim进行颜色设置
- 2024-03-202019-2020-12 20199317 《Linux内核原理与分析》 第十二周作业
- 2024-03-20Linux运维的第二周总结