现代操作系统.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:18 大小:7.2MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

现代操作系统.doc

现代操作系统.doc

预览

免费试读已结束,剩余 8 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

现代操作系统上机实验报告(标题一号黑体)学院软件学院年级05级班级3班成员姓名李雨生学号3005218065姓名王尽宇学号3005218077实验一:方法一:一、银行家算法的模拟实现1。目的:编一个程序,模拟实现银行家算法,以此来实现我们对此算法的认识。2。实现方案:按照书上的例子,来规定每个进程所需要的资源,以及计算机所拥有的资源。同样是五个进程。我们使用VisualC++6.0。创建了2个二维数组来模拟当前分配的资源以及需要的资源,3个一维数组来模拟资源总数,现在占用的资源,以及还剩下的资源,当我们输入了所有的当前分配的资源后,我们开始来计算剩下的资源是不是安全,当可以完全满足一个进程的需要时,释放他占有的全部资源。依次来看是否可以完成所有的进程,如是,则安全,否,则不安全。然后将结果存入文本;本程序的流程图如下:3。说明以及实例用的是书上的例子。全部的资源从一号到4号为6342。一号进程总的需要4111。二号进程总的需要0212。三号进程总的需要4210。四号进程总的需要1111。五号进程总的需要2110。代码:#include<iostream>#include<fstream>usingnamespacestd;intmain(){intc[6][5];//现在的资源;intr[6][5];inte[5]={0,6,3,4,2};intp[5];inta[5];boolsolve;boolre=true;charch;fstreamofstream;ofstream.open("banker.txt",ios::out);while(re==true){r[1][1]=4;r[1][2]=1;r[1][3]=1;r[1][4]=1;r[2][1]=0;r[2][2]=2;r[2][3]=1;r[2][4]=2;r[3][1]=4;r[3][2]=2;r[3][3]=1;r[3][4]=0;r[4][1]=1;r[4][2]=1;r[4][3]=1;r[4][4]=1;r[5][1]=2;r[5][2]=1;r[5][3]=1;r[5][4]=0;//初始化需要的资源re=false;for(intj=1;j<=5;j++){for(inti=0;i<=4;i++){c[j][i]=0;p[i]=0;}}for(j=1;j<=5;j++){cout<<"printinthenumber"<<j<<"process'ssource."<<endl;for(inti=1;i<=4;i++){cin>>c[j][i];p[i]=p[i]+c[j][i];a[i]=e[i]-p[i];r[j][i]=r[j][i]-c[j][i];}}//输入要写入的资源需求while(1){solve=false;for(inti=1;i<=5;i++){if(c[i][0]==0)break;}if(i==6)//判定:如果5个进程全部结束,则安全{ofstream<<"security!"<<endl;break;}for(i=1;i<=5;i++){for(j=1;j<=4;j++){if(r[i][j]>a[j])break;}if(j==5&&c[i][0]!=1){for(j=1;j<=4;j++){a[j]=c[i][j]+r[i][j]+a[j];r[i][j]=0;c[i][j]=0;c[i][0]=1;solve=true;}}}if(solve==false)//如果有至少一个进程没结束{ofstream<<"notsecurity!"<<endl;break;}}cout<<"doyuwanttorestart(y/n)?"<<endl;cin>>ch;if(ch=='y'||ch=='Y')re=true;elseif(ch=='n'||ch=='N')re=false;}ofstream.close();return0;}截屏结果:方法二:试验目的:这是银行家算