www.pudn.com > os4.rar > os4.cpp


//************************   银 行 家 算 法    ************************** 
//*********************************************************************** 
 
#include 
using namespace std; 
 
#define N 4       //定义进程数    
#define M 3       //定义资源数   
#define False 0 
#define True 1 
 
int Max[N][M]={{3,2,2},{6,1,3},{3,1,4},{4,2,2}};     
int Allocation[N][M]={{1,0,0},{5,1,1},{2,1,1},{0,0,2}};    
int Need[N][M]={{2,2,2},{1,0,2},{1,0,3},{4,2,0}};   
int Available[M]={1,1,2};   
int Request[M];    
 
void showdata();//显示资源状况 
int  request(int i);//资源分配算法 
int  safe();//安全性算法 
int  free(int i);//资源释放 
 
 
void showdata()  
{ 
	int i,j; 
	cout<<"+++++++++++++++++++++++++++++++"<:"; 
	for (j=0;j\n"; 
	for (i=0;i\n"; 
	for (i=0;i\n"; 
	for (i=0;iNeed[i][j]) 
		{ 
			cout<<"对不起,申请的资源大于它需要的资源数,请重试!"; 
			return -1;  break; 
		} 
		if(Request[j]>Available[j])  
		{ 
			cout<<"对不起,当前系统可用资源不够,请等待!"; 
			return -1;  break; 
		} 
    } 
    for (j=0;j>choice; 
		if(choice==1)//分配资源 
		{ 
			int i; 
			cout<<"请输入您要分配的进程号(0,1,2,3):"; 
			cin>>i; 
			cout<<"请输入您要为该进程分配的资源:"; 
			for(int j=0;j>Request[j]; 
			request(i); 
		} 
		else if(choice==2)//释放资源 
		{ 
			int i; 
			cout<<"请输入您要释放资源的进程号(0,1,2,3):"; 
			cin>>i; 
			free(i); 
		} 
		else if(choice==3)//显示资源 
		{ 
			showdata(); 
		} 
		else if(choice==4)  break; //离 开 
		else cout<<"请输入合法数字!"; 
    } 
}