银行家算法及结果.docVIP

  • 35
  • 0
  • 约7.29千字
  • 约 7页
  • 2018-03-08 发布于河南
  • 举报
银行家算法及结果

#include iostream.h #include stdio.h #include stdlib.h #include string.h //定义全局变量 const int x=10,y=10; //常量,便于修改 int Available[x]; //各资源可利用的数量 int Allocation[y][y]; //各进程当前已分配的资源数量 int Max[y][y]; //各进程对各类资源的最大需求数 int Need[y][y]; //尚需多少资源 int Request[x]; //申请多少资源 int Work[x]; //工作向量,表示系统可提供给进程继续运行所需的各类资源数量 int Finish[y]; //表示系统是否有足够的资源分配给进程,1为是 int p[y]; //存储安全序列 int i,j; //i表示进程,j表示资源 int n,m; //n为进程i的数量,m为资源j的种类数 int l=0; //l用来记录有几个进程是Finish[i]=1的,当l=n是说明系统状态是安全的 int counter=0; //函数声明 void chushihua(); //初始化函数 void safe(); //安全性算法 void show(); //函数show,输出当前状态 void bank(); //银行家算法 void jieshu(); //结束函数 void chushihua() { cout输入进程的数量: ;//从此开始输入有关数据 cinn; cout输入资源种类数: ; cinm; coutendl输入各种资源当前可用的数量( m 种): endl; for (j=0; jm; j++) { cout输入资源 j 可利用的数量Available[j]: ; cinAvailable[j]; //输入数字的过程... Work[j]=Available[j]; //初始化Work[j],它的初始值就是当前可用的资源数 } coutendl输入各进程当前已分配的资源数量Allocation[n][m]: endl; for (i=0; in; i++) { for (j=0; jm; j++) { cout 输入进程 i 当前已分配的资源 j 数量: ; cinAllocation[i][j]; } coutendl; Finish[i]=0;//初始化Finish[i] } coutendl输入各进程对各类资源的最大需求Max[n][m]: endl; for (i=0; in; i++) { for (j=0; jm; j++) { cout 输入进程 i 对资源 j 的最大需求数: ; cinMax[i][j]; if(Max[i][j]=Allocation[i][j]) //若最大需求大于已分配,则计算需求量 Need[i][j] = Max[i][j]-Allocation[i][j]; else Need[i][j]=0;//Max小于已分配的时候,此类资源已足够不需再申请 } coutendl; } coutendl初始化完成endl; } //安全性算法函数 void safe() { l=0; for (i=0; in;i++) { //i++ if (Finish[i]==0) { //逐个查找Finish[i]==0的进程 条件一 counter=0; //记数器 for (j=0; jm; j++) { if (Work[j]=Need[i][j]) counter=counter+1;// }

文档评论(0)

1亿VIP精品文档

相关文档