logo资料库

预防进程死锁的银行家算法.doc

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
//已经分配的资源 预防进程死锁的银行家算法 /***************************************************** ** ** *****************************************************/ #include #include #include using namespace std; //==================================================== static const int MaxNumber = 100; //最大进程数 int Available[MaxNumber] = {0}; //可分配的资源 int Max[MaxNumber][MaxNumber] = {0}; int Allocation[MaxNumber][MaxNumber] = {0}; int Need[MaxNumber][MaxNumber] = {0}; int Request[MaxNumber] = {0}; int SafeOrder[MaxNumber] = {0}; int Work_Allocation[MaxNumber][MaxNumber] = {0}; 资源之和 int Work[MaxNumber][MaxNumber] = {0}; bool Finish[MaxNumber] = {false}; int n = 0; int m = 0; void Input_Data(); void Bankers_Algorithm(int index); void Security_Algorithm(); void Output_Table1(); void Output_Table2(); void Func1(ifstream &in,int Array[][MaxNumber]); void Func2(char ch); void Func3(int i,int (*Array)[MaxNumber]); //==================================================== int main() { //进程总数 //资源种类 //输入函数 //银行家算法 //安全性算法 //输出资源分配表 //输出安全系列表 预防进程死锁的银行家算法 cout<<"***********************************************\n"; cout<<"** **\n"; cout<<"***********************************************\n"; Input_Data();//输入函数 for(int i = 0;i < n;i++) {//n 个资源,执行 n 次分配 //重复率高的过程函数 1 //重复率高的过程函数 2 //重复率高的过程函数 3 //需要的资源总数 //尚且需要的资源 //请求的资源 //安全序列 //系统可以提供的资源与已经分配的 //系统可以提供的资源 //进程是否结束的标志 T"<>choice; Bankers_Algorithm(choice);//银行家算法 }
return 0; } //==================================================== void Input_Data() { ifstream in("data.txt"); in>>n;//读入进程数 cout<<"进程数:"<>m;//读入资源种类 cout<<"资源种类:"<>Available[i]; } cout<<"请输入请求向量:\n"; for(int h = 0;h < m;h++) { cin>>Request[h]; } int i = index; int count3 = 0; int count4 = 0; for(int j = 0;j < m;j++) {//计算请求的资源是否不大于需要的资源 if(Request[j] <= Need[i][j]) count3++; } if(count3 == m) {//请求的资源不大于需要的资源 for(int k = 0;k < m;k++) if(Request[k] <= Available[k])//计算请求的资源是否不大于可用的资源 count4++; if(count4 == m) {//请求的资源不大于可用的资源 for(int l = 0;l < m;l++) {//修改资源分配表 Available[l] -= Request[l]; Allocation[i][l] += Request[l]; Need[i][l] -= Request[l];
} } else {//请求的资源大于可用的资源 } } else {//请求的资源大于需要的资源 cout<<"错误:尚无足够资源,p"<
}//if }//if }//for }//for if(count1 == n) { cout<<"系统处于安全状态!\n"<<"安全序列:{"; for(int i = 0;i < n;i++) {//输出安全序列 cout<<"P"<
cout<<"-----------------------------------------------\n"; cout<<"\t"<<"Work"<<"\t"<<"Need"<<"\t"<<"Allo"<<"\t"<<"W+Al"<<"\t"<<"Finish"<>Array[i][j]; } } cout<<"\t"; for(int k = 0;k < 4;k++) { for(int h = 0;h < m;h++) { if(ch == 'A') cout<
cout<
分享到:
收藏