搜索
您的当前位置:首页正文

银行家算法

来源:爱够旅游网
#include

#define M 5 #define N 3

#define FALSE 0 #define TRUE 1

//M个进程对N类资源的需求量

int MAX[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}}; //系统可用资源

int AVAILABLE[N]={10,5,7};

//分配给M个进程N类资源的资源量

int ALLOCATION[M][N]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}}; //M个进程N类资源对资源的需求量

int NEED[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}}; //M个进程N类资源对资源的申请量 int REQUEST[N]={0,0,0};

void main() { void print();//输出资源信息 int security(int);//检查分配资源是否安全 void calculate(int);//计算分配后各进程所需资源量 void check(int);//检查进程中的资源是否完成 int flag=1,i,j; char ch; while(flag==1) { print(); printf(\"输入要分配资源的进程\\n\"); scanf(\"%d\ while(i>=M) { printf(\"不存在此进程,请重新输入\\n\"); scanf(\"%d\ } for(j=0;jNEED[i][j]) { printf(\"申请量大于资源所需的资源量,请重新输入\\n\");

scanf(\"%d\ } while(REQUEST[j]>AVAILABLE[j]) { printf(\"申请量大于可提供分配的资源量,请重新输入\\n\"); scanf(\"%d\ } } if(security(i)) { calculate(i); print(); } check(i); printf(\"是否需要继续分配资源,输入y继续,n结束\\n\"); getchar();//用于接收回车 scanf(\"%c\ if(ch=='n'||ch=='N') flag=0; } }

void print() { int i,j; for(i=0;iint security(int i) { int j; int finish[N]; int work[N]; for(j=0;j{ work[j]=AVAILABLE[j]; finish[j]=0; } for(j=0;jvoid calculate(int i) { int j; for(j=0;jvoid check(int i) { int j; for(j=0;j

因篇幅问题不能全部显示,请点此查看更多更全内容

Top