现在的位置: 首页 > 架构设计 > 算法 > 正文

银行家算法架构是什么

2020年01月01日 架构设计, 算法 ⁄ 共 500字 ⁄ 字号 评论关闭

银行家算法的数据结构

  1)可利用资源向量Available。这是一个含有m个元素的数组,其中的而每一个元素代表一类可利用资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态的改变。如果Available[j]=K,则表示系统中现有Rj类资源K个。

  2)最大需求矩阵Max。这是一个n*m的矩阵,它定义了系统中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.如果Request<=Need,则转向2;否则,出错

  2.如果Request<=Available,则转向3,否则等待

  3.系统试探分配请求的资源给进程

  4.系统执行安全性算法

 第二部分:安全性算法模块

  1.设置两个向量

  ①工作向量:Work=Available(表示系统可提供给进程继续运行所需要的各类资源数目)

  ②Finish:表示系统是否有足够资源分配给进程(True:有;False:没有).初始化为False

  2.若Finish[i]=False&&Need<=Work,则执行3;否则执行4(i为资源类别)   3.进程P获得第i类资源,则顺利执行直至完成,并释放资源:Work=Work+Allocation;Finish[i]=true;转2   4.若所有进程的Finish[i]=true,则表示系统安全;否则,不安全!   结束语:以上就是关于银行家算法架构是什么的全部内容,更多内容请关注学步园。

抱歉!评论已关闭.