银行算法上机指导
一、 银行算法的主要思想:
在实施资源分配之前,先计算该次分配后所产生的状态是否安全,即是否存在一种顺
序,使得所有的进程都能执行结束。若安全则分配,否则拒绝分配。
Ps:安全状态:指系统能按照某种顺序如<P1,P2,…Pn>(称其为安全序列),来为每个进
程分配其所需资源,直至最大需求,使每个进程都可顺利完成。若不存在这样的一个
安全序列,则称系统处于不安全状态。
二、 银行算法中的数据结构:
1.可利用资源向量 Available:是一个含有 m 个元素的数组,其中每个元素代表一类可
利用的资源数目,其初始值是系统中所配置的该类资源全部可用资源数目。
2.最大需求矩阵 Max:是一个 n*m 的矩阵,Max(i,j)=k 表示进程 i 需要 Rj 资源的最
大数目是 k 个。
3.分配矩阵 Allocation:是一个 n*m 的矩阵, Allocation(i,j)=k 表示进程 i 当前已
分得 Rj 资源 k 个。
4.需求矩阵 Need:也是一个 n*m 的矩阵, Need(i,j)=k 表示进程 i 还需要 Rj 资源 k
个。
Need[i,j]=Max[i,j]-Allocation[i,j]
三、 安全性算法:
1.设置两个向量:
1)工作向量 Work。表示系统可供给进程继续运行所需要的各类资源数目。
2)Finish。表示系统是否有足够的资源分配给进程。
2.从进程集合中找到一个 能满足下述条件的进程:
Finish[i]=false; Need
i
<=
Work;
如找到,执行步骤 3;否则,执行步骤 4。
3.当进程 P
i
获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执
行: Work=Work+Allocation;
Finish[i]=true ;
go to step 2;
4.如果所有进程 P
i
的 Finish[i]=true ,则表示系统出于安全状态;否则,系统处于不
安全状态。
评论0