银行家算法
来源:互联网 发布:网络暴力的英语作文 编辑:程序博客网 时间:2024/06/11 14:54
转载自:http://www.cnblogs.com/xuxu8511/archive/2012/04/06/2435053.html
目的:避免死锁的产生。
算法思想:
1、假分配检测:Request < Need
Request < Available
2、安全序列检测算法
实例列举:
某系统有R1,R2,R3共3中资源,在T0时刻P0,P1,P2,P3和P4这5个进程对资源的占用和需求情况如下表1,此时系统的可用资源向量为(3,3,2)。试问:
1、T0时刻系统是否存在安全序列?
2、P1请求资源:P1发出请求向量Request(1,0,2),系统是否接受该请求?请使用银行家算法检查
3、P4请求资源:P4发出请求向量Request(3,3,0),系统按银行家算法检查.
4、P0请求资源:P0发出请求向量Request(0,2,0),系统按银行家算法检查.
表1 T0时刻的资源分配表
MAXAllocationNeedAvailableP0 7 5 3 0 1 0 7 4 3 3 3 2 P13 2 2 2 0 01 2 2 P29 0 23 0 26 0 0 P32 2 22 1 10 1 1 P44 3 30 0 24 3 1
an:
1、T0时刻系统是否存在安全序列?
Available > Need1 ----> 可用资源分配给P1,直到P1进程执行完成,然后Available = Available + Allocation1 = (5,3,2)
Available > Need3 -----> 可用资源分配给P3,直到P3进程执行完成,然后Available = Available + Allocation3 = (7,4,3)
Available> Need4.....
得到安全序列为:P1,P3,P4,P2,P0
2、P1请求资源:P1发出请求向量Request(1,0,2),系统是否接受该请求?请使用银行家算法检查
第一步(假分配检查):把Request分配给P1,必须满足Request要小于Available,Request要小于Need。
Request(1,0,2)< Available(3,3,2)
Request(1,0,2)< Need(1,2,2)
因为满足第一步检查,进入第二层检查(安全序列检查)。
第二步(安全序列检查):建立安全性检查表
WorkNeedAllocationWork+AllocationFinishP12 3 00 2 03 0 2如果 Work > Need ,那么执行Work+Allocation,得到:
WorkNeedAllocationWork+AllocationFinishP1 2 3 00 2 0 3 0 2 5 3 2 true 5 3 2找到Need<Work的进程,如果没有找到这样的进程而进程集合没有执行,则算法返回,得到不存在安全序列结果,否则继续执行该算法。
这里我们找到了P3进程。修改安全序列检查表:
WorkNeedAllocationWork+AllocationFinishP1 2 3 00 2 0 3 0 2 5 3 2 trueP35 3 2 0 1 12 1 1 7 4 3 true 7 4 3这样一直执行到所有的进程到完成,以完成该安全序列检查表:
WorkNeedAllocationWork+AllocationFinishP1 2 3 00 2 0 3 0 2 5 3 2 trueP35 3 2 0 1 12 1 1 7 4 3 trueP47 4 34 3 10 0 2 7 4 5 trueP07 4 57 4 30 1 0 7 5 5 trueP27 5 56 0 03 0 210 5 7 true这样就找到了整个安全序列为:P1,P3,P4,P0,P2
3、4小问也是同样的解题过程。这里不赘述...
- 银行家算法
- 银行家算法
- 银行家算法
- 银行家算法
- 银行家算法
- 银行家算法
- 银行家算法
- 银行家算法
- 银行家算法
- 银行家算法
- 银行家算法
- 银行家算法
- 银行家算法
- 银行家算法
- 银行家算法
- 银行家算法
- 银行家算法
- 银行家算法
- 底层(嵌入式)大牛的博客
- HP TPC-C trace的解析
- 安卓如何实现list的全选效果
- MTK camera image sensor driver
- 设计四个线程,其中共两个线程每次对j增加1,另外两个线程每次对j减少1。循环100次,写出程序。
- 银行家算法
- 【转】MYSQL安装失败的原因及解决办法
- Android中如何做到自定义的广播只能有指定的app接收
- 基于GMSL在汽车电子控制单元中的应用分析
- cuda日记-20140929
- 百度推送实例1--登录挤掉,下线通知
- Hibernate各种主键生成策略与配置详解
- linux下mysql不能被远程连接的解决方法
- 进程总结