银行家算法及结果.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
银行家算法及结果

#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)

asd522513656 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档