- 1
- 0
- 约5.45千字
- 约 7页
- 2019-01-02 发布于福建
- 举报
银行家话算法代码
#includeiostream.h
#includestring.h
#includestdio.h
#define False 0
#define True 1
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;//作业的最大数为100
int N=100;//资源的最大数为100
void showdata()//显示资源矩阵
{
int i,j;
cout系统目前可用的资源[Avaliable]:endl;
for(i=0;iN;i++)
coutname[i] ;
coutendl;
for (j=0;jN;j++)
coutAvaliable[j] ;//输出分配资源
coutendl;
cout Max Allocation Needendl;
cout进程名 ;
for(j=0;j3;j++){
for(i=0;iN;i++)
coutname[i] ;
cout ;
}
coutendl;
for(i=0;iM;i++){
cout i ;
for(j=0;jN;j++)
coutMax[i][j] ;
cout ;
for(j=0;jN;j++)
coutAllocation[i][j] ;
cout ;
for(j=0;jN;j++)
coutNeed[i][j] ;
coutendl;
}
}
int changdata(int i)//进行资源分配
{
int j;
for (j=0;jM;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;iM;i++){
apply=0;
for(j=0;jN;j++){
if (Finish[i]==FalseNeed[i][j]=Work[j]){
apply++;
if(apply==N){
for(m=0;mN;m++)
Work[m]=Work[m]+Allocation[i][m];//变分配数
Finish[i]=True;
temp[k]=i;
i=-1;
k++;
flag++;
}
}
}
}
for(i=0;iM;i++){
if(Finish[i]==False){
cout系统不安全endl;//不成功系统不安全
return -1;
}
}
cout系统是安全的!endl;//如果安全,输出成功
cout分配的序列:;
for(i=0;iM;i++){//输出运行进程数组
couttemp[i];
if(iM-1) cout-;
}
coutendl;
return 0;
}
void share()//利用银行家算法对申请资源对进行判定
{
char ch;
int i=0,j=0;
ch=y;
cout请输入要求分配的资源进程号(0-M-1):;
cini;//输入须申请的资源号
cout请输入进程 i 申请的资源:endl;
for(j=0;j
原创力文档

文档评论(0)