银行家算法C++代码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#include

#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;//作业的最大数

int N;//资源的最大数

int Sum[50]={0};

void init()

{ int i,j,flag;

char ming;

cout<<"请首先输入系统可供资源种类的数量:";

cin>>N;

for(i=0;i

{

cout<<"资源"<

cin>>ming;

name[i]=ming;

cout<<"资源的数量:";

cin>>Sum[i];

}

cout<

cout<<"请输入作业的数量:";

cin>>M;

cout<<"请输入各进程的最大需求量("<

for(i=0;i

for(j=0;j

cin>>Max[i][j];

do{

flag=0;

cout<<"请输入各进程已经申请的资源量("<

for(i=0;i

for(j=0;j

{

cin>>Allocation[i][j];

if(Allocation[i][j]>Max[i][j])

flag=1;

Need[i][j]=Max[i][j]-Allocation[i][j];

}

}while(flag);

if(flag)

cout<<"申请的资源大于最大需求量,请重新输入!\n";

for(j=0;j

{ for(i=0;i

Sum[j]=Sum[j]-Allocation[i][j];

Avaliable[j]=Sum[j];

}

cout<<"Avaliable的值:"<

cout<

}

}

void restore(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];

}

}

void showdata()//显示资源矩阵

{

int i,j;

cout<<" Max Allocation Need"<

cout<<"进程名";

for(j=0;j<3;j++)

{

for(i=0;i

cout<

cout<<" ";

}

cout<

for(i=0;i

{

cout<<" "<

for(j=0;j

cout<

cout<<" ";

for(j=0;j

cout<

cout<<" ";

for(j=0;j

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=0,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

{

apply=0;

for(j=0;j

{

if (Finish[i]==False&&Need[i][j]<=Work[j])

{

apply++;

if(apply==N)

相关文档
最新文档