欢迎来到天天文库
浏览记录
ID:59501984
大小:109.00 KB
页数:5页
时间:2020-11-03
《银行家算法实验报告电子版.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、福州大学数学与计算机科学学院《操作系统》上机实验报告专业和班级成绩姓名学号课程名称操作系统实验名称银行家算法实验目的和要求对任意一个进程提出资源申请,能准确判断出能否把资源分配给该进程。实验内容银行家算法共有五个进程:p0,p1,p2,p3,p4,三类资源A,B,C,各资源的总数分别为10、5、7,假设某一时刻资源分配情况如下所示:ProcessMaxABCAllocationABCNeedABCAvailableABCP0753010743332P1322200122P2902302600P3222211011P44330024
2、31实验步骤程序代码如下:#include#defineM5//进程数#defineN3//资源数structjc{intnum;//进程号intmax[N];//最大需要资源数intallocation[N];//已分配资源intneed[N];//还需要资源intfinish;//安全判断};staticavailable[N];//可分配资源voidyhjsf(intx,inta[],jcy[])//银行家算法{intwork[N],i,j,k,l,sum,b;jcv;sum=0;for(i=0;i3、++)//假设分配请求资源{work[i]=available[i]-a[i];//把修改的可分配资源赋予worky[x].need[i]=y[x].need[i]-a[i];//先分配,不安全还原y[x].allocation[i]=y[x].allocation[i]+a[i];}for(i=0;i=y[j].need[k])//判断资源是否满足第j进程所需continue;els4、eb=1;//b为判断资源是否满足为1表示不满足}if(b==0)//满足时交换可执行的进程{v=y[i];y[i]=y[j];y[j]=v;for(l=0;l5、e[i]-a[i];for(i=0;i",y[i].num);}else//不安全,撤销请求资源{printf("notsafe");for(i=0;i6、need{x[i].num=i;x[i].finish=0;printf("分别输入第%d个进程所需最大资源",i);for(j=0;j7、最大资源以分配资源需要资源");for(i=0;i8、d",&available[i]);}printf("inputrequest进程");//输入请求进程号scanf("%d",&y);printf("分别输入第%d个进程所请求的资源",y);for(i=0;i
3、++)//假设分配请求资源{work[i]=available[i]-a[i];//把修改的可分配资源赋予worky[x].need[i]=y[x].need[i]-a[i];//先分配,不安全还原y[x].allocation[i]=y[x].allocation[i]+a[i];}for(i=0;i=y[j].need[k])//判断资源是否满足第j进程所需continue;els
4、eb=1;//b为判断资源是否满足为1表示不满足}if(b==0)//满足时交换可执行的进程{v=y[i];y[i]=y[j];y[j]=v;for(l=0;l5、e[i]-a[i];for(i=0;i",y[i].num);}else//不安全,撤销请求资源{printf("notsafe");for(i=0;i6、need{x[i].num=i;x[i].finish=0;printf("分别输入第%d个进程所需最大资源",i);for(j=0;j7、最大资源以分配资源需要资源");for(i=0;i8、d",&available[i]);}printf("inputrequest进程");//输入请求进程号scanf("%d",&y);printf("分别输入第%d个进程所请求的资源",y);for(i=0;i
5、e[i]-a[i];for(i=0;i",y[i].num);}else//不安全,撤销请求资源{printf("notsafe");for(i=0;i6、need{x[i].num=i;x[i].finish=0;printf("分别输入第%d个进程所需最大资源",i);for(j=0;j7、最大资源以分配资源需要资源");for(i=0;i8、d",&available[i]);}printf("inputrequest进程");//输入请求进程号scanf("%d",&y);printf("分别输入第%d个进程所请求的资源",y);for(i=0;i
6、need{x[i].num=i;x[i].finish=0;printf("分别输入第%d个进程所需最大资源",i);for(j=0;j7、最大资源以分配资源需要资源");for(i=0;i8、d",&available[i]);}printf("inputrequest进程");//输入请求进程号scanf("%d",&y);printf("分别输入第%d个进程所请求的资源",y);for(i=0;i
7、最大资源以分配资源需要资源");for(i=0;i8、d",&available[i]);}printf("inputrequest进程");//输入请求进程号scanf("%d",&y);printf("分别输入第%d个进程所请求的资源",y);for(i=0;i
8、d",&available[i]);}printf("inputrequest进程");//输入请求进程号scanf("%d",&y);printf("分别输入第%d个进程所请求的资源",y);for(i=0;i
此文档下载收益归作者所有