#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;j 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;i 因篇幅问题不能全部显示,请点此查看更多更全内容