银行家算法
作者:互联网
题
- 列表画出T0时刻的资源分配状态表,在表中显示进程含需要的资源数量和系统可用资源数量
- T0时刻的是否为安全状态?若是请给出安全序列
- 在t0时刻进程p1请求资源为(3,0,3),是否能实施资源分配?为什么?
- 在T0时刻若进程p4请求资源为(2,0,1),则是否能实现资源分配?为什么
解:
1.
T0 | 分配资源(Allcation) | 最大资源(Claim) | 含需要(Need) | 可用资源 |
---|---|---|---|---|
P1 | (2、1、2) | (5、4、9) | (3、3、7) | (2、5、2) |
P2 | (3、0、2) | (4、3、5) | (1、3、3) | |
P3 | (3、0、4) | (3、0、5) | (0、0、1) | |
P4 | (2、0、4) | (5、2、5) | (3、2、1) | |
P5 | (3、1、4) | (4、2、4) | (1、1、0) |
计算过程:
分配资源和最大资源题中以告知,需要计算的是含需要和可用资源
含需要:最大资源-分配资源=含需要 和计算向量一样可以把他们对应的值想象成坐标系中的(x、y、z)。
例如–P1: (5-2,4-1,9-2)计算出来的结果就是含需要的资源
可用资源:总的资源-分配资源和=可用资源
列如:(15-2-3-3-2-3,7-1-1,18-2-2-4-4-4)=(2,5,2)
2.是安全状态
过程:
我们现在可以使用的资源是(2,5,2)我们开始分配资源可以看到p3和p5都可以分配(就是可用资源-含需要! =0 )一般是从最少的开始计算开始计算p3:(2,5,2)-(0,0,1) =(2,5,1) p3得到了资源就可以运行了,运行完成后就需要归还资源所以我们用剩下的资源+它归还的资源(满足最大资源就可以运行)(2,5,2)+(3,0,5)=(5,5,7)依次类推
-
p3:(2,5,2)-(0,0,1) +(3,0,5)=(5,5,7)
-
p4: (5,5,7)-(3,2,1)+(5,2,5)=(7,5,11)
…
这样我们可以得到安全序列为:p3 p4 p5 p1 p2
3.、不能
理解:
t0时刻它请求资源这时它所需资源为(3,0,3)而可用资源为(2,5,2)相减小于0
所以不能
4.可以 可以得到安全序列为 p3 p4 p5 p1 p2
和第一题一样看它是否可以得到安全序列,若有安全序列则可以实施资源分配否则不可以
银行家算法
什么是银行家算发?
简单来说他是模拟了银行的借贷系统、解决死锁问题的算法,是由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计的
,保证了系统的安全运行。
什么是死锁?
比如进程A占了一个资源1,他需要资源2,这时资源2被进程B占领而他需要资源1,狭路相逢,勇者胜。而这俩货都比较怂,就一直等着对方把资源释放出来,这样就产生了死锁。
这时候银行家算法产生了,它是借助于银行家借贷时的策略而产生的一种算法,基本思想为两个模块,一个是主模块即银行家算法模块,第二个是安全性检查模块,银行家算法模块要做的是当又进程申请资源时,先检查当前系统是否能够满足进程的需求,如果能满足就试分配,程序进入安全性检查模块,如果不能满足就拒绝申请,从而保证资源不会被“空手套白狼。再有一点就是银行家算法的数据结构是数组。
标签:p3,算法,模块,银行家,资源,分配资源 来源: https://blog.csdn.net/weixin_45736498/article/details/105604853