操作系统实验三:银行家算法
时间:2013-12-13
地点:计算机实验机房2
实验人:朱蓉蓉 学号:E01114336
本次实验主要针对银行家算法的实现和安全序列的检测。
银行家算法实验代码: #include
using namespace std;
int Max[100][100]={0};//各进程所需各类资源的最大需求 int Avaliable[100]={0};//系统可用资源 char name[100]={0};//资源的名称
int Allocation[100][100]={0};//系统已分配资源 int Need[100][100]={0};//还需要资源 int Request[100]={0};//请求资源向量 int temp[100]={0};//存放安全序列
int Work[100]={0};//存放系统可提供资源 int M=100;//进程的最大数为 int N=100;//资源的最大数为 void showdata()//显示资源矩阵 {
int i,j;
cout<<\系统目前可用的资源[Avaliable]:\ for(i=0;i for (j=0;j cout< cout<<\ cout<<\进程名 \for(j=0;j<3;j++){ for(i=0;i cout< } cout< for(i=0;i cout<<\ for(j=0;j cout< cout< cout< int changdata(int i)//进行资源分配 { int j; for (j=0;j Avaliable[j]=Avaliable[j]-Request[j]; Allocation[i][j]=Allocation[i][j]+Request[j]; Need[i][j]=Need[i][j]-Request[j]; } return 1; } int safe()//安全性算法 { int i,k=0,m,apply,Finish[100]={0}; int j; int flag=0; Work[0]=Avaliable[0]; Work[1]=Avaliable[1]; Work[2]=Avaliable[2]; for(i=0;i for(j=0;j if (Finish[i]==False&&Need[i][j]<=Work[j]){ apply++; if(apply==N){ for(m=0;m Work[m]=Work[m]+Allocation[i][m];//变分配数 Finish[i]=True; temp[k]=i; i=-1; k++; flag++; } } } } for(i=0;i if(Finish[i]==False){ cout<<\系统不安全\不成功系统不安全 return -1; } } cout<<\系统是安全的!\如果安全,输出成功 cout<<\分配的序列:\ for(i=0;i if(i cout< void share()//利用银行家算法对申请资源对进行判定 { char ch; int i=0,j=0; ch='y'; cout<<\请输入要求分配的资源进程号(0-\ cin>>i;//输入须申请的资源号 cout<<\请输入进程\申请的资源:\ for(j=0;j cout< cin>>Request[j];//输入需要申请的资源 } for (j=0;j if(Request[j]>Need[i][j])//判断申请是否大于需求,若大于则出错 { cout<<\进程\申请的资源大于它需要的资源\ cout<<\分配不合理,不予分配!\ ch='n'; break; } else { if(Request[j]>Avaliable[j])//判断申请是否大于当前资源,若大于则 { //出错 cout<<\进程\申请的资源大于系统现在可利用的资源\ cout<<\分配出错,不予分配!\ ch='n'; break; } } } if(ch=='y') { changdata(i);//根据进程需求量变换资源 showdata();//根据进程需求量显示变换后的资源 safe();//根据进程需求量进行银行家算法判断 } } void addresources(){//添加资源 int n,flag; } cout<<\请输入需要添加资源种类的数量:\cin>>n; flag=N; N=N+n; for(int i=0;i cout<<\名称:\cin>>name[flag]; cout<<\数量:\ cin>>Avaliable[flag++]; } showdata(); safe(); void delresources(){//删除资源 char ming; int i,flag=1; cout<<\请输入需要删除的资源名称:\do{ cin>>ming; for(i=0;i if(ming==name[i]){ flag=0; break; } if(i==N) cout<<\该资源名称不存在,请重新输入:\} while(flag); } for(int j=i;j name[j]=name[j+1]; Avaliable[j]=Avaliable[j+1]; } N=N-1; showdata(); safe(); void changeresources(){//修改资源函数 cout<<\系统目前可用的资源[Avaliable]:\ for(int i=0;i cout< cout<<\输入系统可用资源[Avaliable]:\ cin>>Avaliable[0]>>Avaliable[1]>>Avaliable[2]; cout<<\经修改后的系统可用资源为\for (int k=0;k cout< void addprocess(){//添加作业 int flag=M; M=M+1; } cout<<\请输入该作业的最大需求量[Max]\for(int i=0;i Need[flag][i]=Max[flag][i]-Allocation[flag][i]; } showdata(); safe(); int main()//主函数 { int i,j,number,choice,m,n,flag; char ming; cout<<\ cout<<\ cout<<\银行家算法的实现 ||\cout<<\cout<<\朱蓉蓉 ||\cout<<\cout<<\ 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库操作系统实验报告之银行家算法和随机算法实现资源分配在线全文阅读。
相关推荐: