前言:
当前朋友们对“操作系统银行家算法available怎么求”大约比较注重,兄弟们都需要知道一些“操作系统银行家算法available怎么求”的相关文章。那么小编也在网络上搜集了一些有关“操作系统银行家算法available怎么求””的相关资讯,希望大家能喜欢,咱们快快来了解一下吧!银行家算法,是操作系统中很重要的一部分内容,它的主要作用是避免死锁的产生,以银行借贷系统的分配策略为基础,判断并保证系统的安全运行
Q:在银行家算法中,若出现下述资源分配情况(5个进程,资源A/B/C共3类),假设系统有A类资源 5个,B类资源7个,C类资源12个,某一时刻有以下分资源分配(5,7,12)
那么available就是减去已经分配的那些所有部分,剩下的就是可获得的
即为1,2,1,可得到available(1,2,2)
Process Max Allocation
A B C A B C
P1 4 1 3 2 1 2
P2 0 6 2 0 2 2
P3 1 2 2 0 0 1
P4 1 0 3 1 0 0
P5 3 5 7 1 2 5
Max[i][j]=Allocation[i][j]+Need[i][j]
银行家算法中涉及到的数据结构有:可利用资源向量Available
最大需求Max,分配Allocation,需求Need
首先,我们要设置两个工作量,Work=Available和Finish
然后进行判断,Finish==False
Need<=work
在这一步,我们要将need的值算出来,显而易见
P1的need是 2 0 1
P2的need是 0 4 0
P3的need是 1 2 1
P4的need是 0 0 3
P5的need是 2 3 2
在第三步,我们就要来计算work=work+allocation,
Finish==True
这里我们要确定一件事,就是need要小于work的,work是available即为(1,2,2)
那么其中小于work的仅有P3的need
那么P3写在第一位,得到的work就是1 2 3
之后是P4的need小于work,那么P4写在第二位,得到的work就是2 2 3
再之后就是P1的need小于work,那么P1写在第三位,得到的work就是4 3 5
之后是P5的need小于work,那么P5写在第四位,得到的work就是5 5 10
最后就是P2的need小于work,那么P2写在第五位,得到的work就是5 9 10
很显然,每个的Finish状态都是True
那么系统就是能够安全运行的