银行家算法

思想:银行在给企业办贷款的时候,企业会依据项目规模得出项目总需求金额向银行报备,同时企业往往会根据项目进度分期提出贷款请求,银行则会记录对于这些企业已贷款金额银行自身剩余金额,结合企业完成项目还需金额,在下一次贷款前,会形成一个贷款计划,该计划保证了银行能够收回所有贷款(假设企业已贷款金额达到项目总需求金额,我们认为银行能够收回贷款),只有在该贷款计划达到目的时企业才能进行下次贷款,即在企业在申请贷款时,银行通过校验计算出在此次贷款后能否有一个满足条件的贷款计划,若不能则拒绝此次贷款申请。

提取出以上关键字:
项目总需求金额这些企业已贷款金额企业完成项目还需金额银行自身剩余金额
提出贷款请求
贷款计划

我们可以抽象为:
int Claim[n,m]int Allocation[n,m]int Need[n,m]int Available[m]
int Request[n]
安全进程序列

  1. int Claim[n,m]:记录每个进程所需各类资源的资源实例最大值。如果Claim[i,j]=k,则进程pi最多需要资源类rj中的k个资源实例
  2. int Allocation[n,m]:记录每个进程占有格资源类中的资源私立的数量。如果Allocation[i,j]=k,则进程pi占有资源类rj中的k个资源实例。初始时Allocation[i,j]=0
  3. int Need[n,m]:记录每个进程尚需各个资源类中的资源实例的数量。如果Need[i,j]=k,则进程pi尚需资源类rj中的k个资源实例。初始时Need=Claim
  4. int Available[m]:记录当前各类资源中资源实例的数量。如果Available[j]=k,则资源类rj当前有k个资源实例。初始时Available的值为系统资源总量
  5. int Request[n,m]:记录每个进程当前申请各个资源类的资源实例的数量。如果Request[i,j]=k,则进程pi申请资源类rj中的k个资源实例
  6. 安全进程序列为每个进程都能执行完的执行序列,不唯一

可知,贷款时需要资源分配算法和计算安全序列需要安全检测算法,则

银行家算法——资源分配算法:
资源分配算法

银行家算法——安全检测算法:

安全检测算法

int Work[m]:工作变量,记录可用资源

int Finish[n]:工作变量,记录进程可否执行完

版权声明:本文为匿名原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: