资源描述:
《银行家安全算法 .doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、江西科技学院实验项目卡实验中心:计算机中心实验室:S2-303机房制卡时间:2013年3月实验项目名称编程实现银行家安全算法实验项目编号课程名称操作系统课程代码81211679适用专业计算机科学与技术实验学时数6实验类型综合实验要求必修实验类别专业实验实验者类别统招本科每批组数45每组人数1实验方式课内实验首开时间2005年9月变动情况说明无实验教材或指导书名称《操作系统》实验目的、实验内容、实验原理与实验要求:一、实验目的通过实验加强对银行家安全算法的理解和掌握。二、实验内容熟悉避免死锁发生的方法,死锁与安全序列的关系,编程实现银行家算法,要求输出进程的安全序列。三、实验要求1、需
2、写出设计说明;2、设计实现代码及说明3、运行结果;1输入Max和All进程的值输入ava进程的值得到Need将4个进程放到一个数组,打印判断Need与ava的大小正确错误则记下当前位置P[i],并继续与下一组比较与下一组Need比较不是安全序列输出安全序列2代码:#includemain(){inti,j,Max[5][3],All[5][3],Need[5][4],Ava[3],a[5][12],q,w,s[3];intk=0,c[5];intm=5;printf("请输入Max的值;");for(i=0;i<5;i++)for(j=0;j<3;j++)sca
3、nf("%d",&Max[i][j]);printf("请输入All的值;");for(i=0;i<5;i++)for(j=0;j<3;j++)scanf("%d",&All[i][j]);for(i=0;i<5;i++)for(j=0;j<3;j++)Need[i][j]=Max[i][j]-All[i][j];for(i=0;i<5;i++)Need[i][3]=1;/*多定义need一列将这一列作为标示位记录是否已经进程结束并初始化为1*/printf("请输入Ava的值;");for(i=0;i<3;i++)scanf("%d",&Ava[i]);for(i=0;i<
4、5;i++)/*输出need看是否将标示位赋值成功*/{for(j=0;j<4;j++)printf("%2d",Need[i][j]);printf("");}for(i=0;i<5;i++)/*将3个数组的值移到一个数组里*/for(j=0;j<3;j++)a[i][j]=Max[i][j];for(i=0;i<5;i++)for(j=0;j<3;j++)a[i][j+3]=All[i][j];for(i=0;i<5;i++)for(j=0;j<3;j++)a[i][j+6]=Need[i][j];for(j=0;j<3;j++)a[0][j+9]=Ava[j];printf
5、("MaxAllNeedAva");/*打印该数
组*/printf("ABCABCABCABC");for(j=0;j<1;j++)printf("p[%d]",j);for(j=0;j<12;j++)printf("%5d",a[0][j]);printf("");for(i=1;i<5;i++){printf("p[%d]",i);for(j=0;j<9;j++)printf("%5d",a[i][j]);printf("");}/*该程序可以判断之前的进程是否有安全序列*//*lop1:for(i=0;i<5;i++)if(Ava[0]>=Need[i][0]
6、&&Ava[1]>=Need[i][1]&&Ava[2]>=Need[i][2]&&Need[i][3]==1){Ava[0]=Ava[0]-Need[i][0]+Max[i][0];Ava[1]=Ava[1]-Need[i][1]+Max[i][1];Ava[2]=Ava[2]-Need[i][2]+Max[i][2];Need[i][3]=0;c[k]=i;k++;}if(Need[0][3]==0&&Need[1][3]==0&&Need[2][3]==0&&Need[3][3]==0&&Need[4][3]==0){gotolop2;}/*for(i=0;i<5;i++){f
7、or(j=0;j<4;j++)printf("%2d",Need[i][j]);printf("");}*//*if(m>0){m--;gotolop1;}elsegotolop3;lop2:printf("安全序列为:");for(j=0;j<5;j++)printf("P[%d]",c[j]);if(!(Need[0][3]==0&&Need[1][3]==0&&Need[2][3]==0&&Need[3][3]==0&&Need[4][3