网站开发e r图,微信怎么创建微信公众号,公共交易中心招标网,活码二维码生成器实验六 银行家算法(下)一、实验说明实验说明#xff1a;本次实验主要是对银行家算法进行进一步的实践学习#xff0c;掌握银行家算法的整体流程#xff0c;理解程序测试时每一步的当前状态#xff0c;能对当前的资源分配进行预判断。二、实验要求1、获取源代码2、看懂大致框…实验六 银行家算法(下)一、实验说明实验说明本次实验主要是对银行家算法进行进一步的实践学习掌握银行家算法的整体流程理解程序测试时每一步的当前状态能对当前的资源分配进行预判断。二、实验要求1、获取源代码2、看懂大致框架3、尝试运行并知道运行中输入的信息的意义4、通过运行程序分配如下 总需求a 8 5 5; b 5 3 4 已分配a 4 2 3; b 4 2 2; 现在a 提出分配 1 1 1。 可以分配吗5、请从银行家算法的理论进行分析上述分配是否会造成死锁如果会造成死锁说明源代码并不完整请同学改进完善源代码使其能有效判断是否存在安全序列进而拒绝不安全的分配要求。三、实验步骤1、在文档右边的虚拟化操作系统中打开桌面的 Xfce 终端输入cd Desktop2、输入touch 6-1.c3、输入gedit 6-1.c4、在 gedit 里面输入源代码点击 save 保存5、关掉 gedit 编辑器6、输入g -o 6-1 6-1.c7、在桌面的 Xfce 终端继续输入命令./6-18、按要求输入并运行观察结果9、针对实验要求5改进完善源代码.四、实验报告要求 1、通过运行程序分配如下 总需求a 8 5 5; b 5 3 4 已分配a 4 2 3; b 4 2 2; 现在a 提出分配 1 1 1 完成2、简述自己对银行家算法的理解银行家算法是避免死锁的算法在每一个进程进入系统时都必须申明在运行过程中所需要每种资源的最大单元数目其数目不嫩超过系统所拥有的资源总量当进程请求资源时系统会确认是否有足够的资源分配给该进程若有的话还要进一步判断如果分配给该进程所申请的资源会不会使系统处于不安全状态如果不会才将资源分配给该进程。3、针对实验要求5改进完善源代码.对改进之处说明或截图并重新进行前面的分配过程并截图。4、将最后的完整源代码复制。#include#include#include#include#include//#includeconst int MAX_P20;const int MAXA10; //定义A类资源的数量const int MAXB5;const int MAXC7;using namespace std;typedef struct node{int a;int b;int c;int remain_a;int remain_b;int remain_c;}bank;typedef struct node1{char name[20];int a;int b;int c;int need_a;int need_b;int need_c;}process;bank banker;process processes[MAX_P];int quantity;//初始化函数void initial(){int i;banker.aMAXA;banker.bMAXB;banker.cMAXC;banker.remain_aMAXA;banker.remain_bMAXB;banker.remain_cMAXC;for(i0;istrcpy(processes[i].name,);processes[i].a0;processes[i].b0;processes[i].c0;processes[i].need_a0;processes[i].need_b0;processes[i].need_c0;}}//新加作业void add(){char name[20];int flag0;int t;int need_a,need_b,need_c;int i;coutcoutcoutcoutcinname;for(i0;iif(!strcmp(processes[i].name,name)){flag1;break;}}if(flag){cout}else{coutcinneed_a;coutcinneed_b;coutcinneed_c;t1;coutif(need_abanker.remain_a){coutt0;}if(need_bbanker.remain_b){coutt0;}if(need_cbanker.remain_c){coutt0;}if(t){strcpy(processes[quantity].name,name);processes[quantity].need_aneed_a;processes[quantity].need_bneed_b;processes[quantity].need_cneed_c;quantity;cout}else{cout}}}//为作业申请资源void bid(){char name[20];int i,p;int a,b,c;int flag;coutcoutcoutcinname;p-1;for(i0;iif(!strcmp(processes[i].name,name)){pi;break;}}if(p!-1){coutcina;coutcinb;coutcinc;flag1;if((abanker.remain_a)||(aprocesses[p].need_a-processes[p].a)){coutflag0;}if((bbanker.remain_b)||(bprocesses[p].need_b-processes[p].b)){coutflag0;}if((cbanker.remain_c)||(cprocesses[p].need_c-processes[p].c)){coutflag0;}if(flag){banker.remain_a-a;banker.remain_b-b;banker.remain_c-c;processes[p].aa;processes[p].bb;processes[p].cc;cout}else{cout}}else{cout}}//撤消作业void finished(){char name[20];int i,p;coutcoutcoutcinname;p-1;for(i0;iif(!strcmp(processes[i].name,name)){pi;break;}}if(p!-1){banker.remain_aprocesses[p].a;banker.remain_bprocesses[p].b;banker.remain_cprocesses[p].c;for(ip;iprocesses[i]processes[i1];}strcpy(processes[quantity-1].name,);processes[quantity-1].a0;processes[quantity-1].b0;processes[quantity-1].c0;processes[quantity-1].need_a0;processes[quantity-1].need_b0;processes[quantity-1].need_c0;quantity--;cout}else{cout}}//查看资源情况void view(){int i;coutcoutcoutcoutcoutcoutcoutif(quantity0){for(i0;icoutcoutcoutcoutcout}}else{cout}}//显示版权信息函数void version(){coutcout}int main(){int chioce;int flag1;initial();version();while(flag){coutcoutcoutcoutcinchioce;switch(chioce){case 1:add();break;case 2:bid();break;case 3:finished();break;case 4:view();break;case 0:flag0;break;default:cout}}return 0;}