银行家算法,操作系统中的Available,Max,Allocation,Need

全文分四部分:

一、什么是银行家算法?

二、银行家算法中的数据结构
三、银行家算法自然语言描述
四、银行家算法流程图表示
五、银行家算法举例

一、什么是银行家算法?

用于避免死锁情况的出现,每一个新进程进入系统时,必须声明需要每种资源的最大数目,其数目不能超过系统所拥有的的资源总量。当进程请求一组资源时,系统必须首先确定是否有足够的资源分配给该进程,若有,再进一步计算在将这些资源分配给进程后,是否会使系统处于不安全状态如果不会才将资源分配给它,否则让进程等待。

二、银行家算法中的数据结构

为了实现银行家算法,在系统中必须设置这样四个数据结构:

1、Available向量:表示可利用资源的数量,初值为系统每类资源总数量。Availabeli]=K

2、Max矩阵:每个进程对每类资源的最大需求数量。Max[i,j]=K

3、Allocation矩阵:每个进程已分配的每类资源数量。Allocation[i,j]=K

4、Need矩阵:每个进程尚需要的每类资源数量。Need[i,j]=Max[i,j]-Allocation[i,j]

三、银行家算法自然语言描述

银行家算法,操作系统中的Available,Max,Allocation,Need_第1张图片

银行家算法,操作系统中的Available,Max,Allocation,Need_第2张图片

银行家算法,操作系统中的Available,Max,Allocation,Need_第3张图片

四、银行家算法流程图表示

银行家算法,操作系统中的Available,Max,Allocation,Need_第4张图片

五、银行家算法举例

银行家算法,操作系统中的Available,Max,Allocation,Need_第5张图片

首先看P0行,A、B、C总需求量7,5,3 P0进程对已分配资源分别是0 1 0,需求为 7 4 3 ,此时可用资源3 3 2 

Need=Max - Allocation,根据这个可以算出P1、P2、P3、P4进程的Need

银行家算法,操作系统中的Available,Max,Allocation,Need_第6张图片

Work向量,Finish向量,开始Work向量是等于Available向量也就是当前剩余的资源,我们就从列表中找哪个Work向量小于Need向量,P1的Need是1 2 2,而可用资源数目Available是3 3 2 ,P1进程需求满足,因此P1进程可以执行,Work+Allocation代表完成后的资源数。然后继续判断其他进程,如上表示例

最后进程序列为 ,因此是安全的。

另外,安全序列可能会不唯一

情况一:

银行家算法,操作系统中的Available,Max,Allocation,Need_第7张图片

银行家算法,操作系统中的Available,Max,Allocation,Need_第8张图片

银行家算法,操作系统中的Available,Max,Allocation,Need_第9张图片

银行家算法,操作系统中的Available,Max,Allocation,Need_第10张图片

情况二:

银行家算法,操作系统中的Available,Max,Allocation,Need_第11张图片

拒绝:

银行家算法,操作系统中的Available,Max,Allocation,Need_第12张图片

银行家算法,操作系统中的Available,Max,Allocation,Need_第13张图片

银行家算法,操作系统中的Available,Max,Allocation,Need_第14张图片

你可能感兴趣的:(操作系统,操作系统)