在此之间你需要创建三个文件Available_list.txt,Max_list.txt,Allocation_list.txt,把三个文件和程序放在同一个文件夹里,三个文件编写格式如下
available.txt
3(代表资源种类,括号里面的文字不用写,只是解释)
3 9 7(各种资源数量)
Max_list.txt
4(进程数量)
2 3 1
1 1 1
1 3 4
1 2 1
Allocation._list.txt
0 0 0
0 0 1
1 0 1
1 0 1
像这样
#include#include #include //Windows内核API,图形界面接口,图形设备函数等重要的功能 #define MAX_PROCESS 32 //最大进程数 #define MAX_RESOURCE 64 //最大资源类别 int PROCESS_NUM; //实际总进程数 int RESOURCE_NUM; //实际资源类别数 int Available[MAX_RESOURCE]; //可利用资源向量 int Max[MAX_PROCESS][MAX_RESOURCE]; //最大需求矩阵 int Allocation[MAX_PROCESS][MAX_RESOURCE]; //分配矩阵 int Need[MAX_PROCESS][MAX_RESOURCE]; //需求矩阵 int Request_PROCESS; //发出请求的进程 int Request_RESOURCE_NUMBER[MAX_RESOURCE]; //请求资源数????? void Read_Available_list(); //读入可用资源Available void Read_Max_list(); //读入最大需求矩阵Max void Read_Allocation_list(); //读入已分配矩阵Allocation void PrintInfo(); //打印各数据结构信息 void Read_Request(); //输入请求向量 void Allocate_Source(); //开始正式分配资源(修改Allocation_list.txt) void Recover_TryAllocate(); //恢复试分配前状态 int Test_Safty(); //安全性检测 void RunBanker(); //执行银行家算法 using namespace std; //读入可用资源Available void Read_Available_list() { FILE *fp; if((fp=fopen("Available_list.txt","r"))==NULL) { cout<<"错误,文件打不开,请检查文件名"< Request_PROCESS; cout<<"输入请求资源的数目:按照这样的格式输入 x x x:"; for(int i=0; i >Request_RESOURCE_NUMBER[i]; } //安全性检测 //返回值:0:未通过安全性测试; 1:通过安全性测试 int Test_Safty() { //请完成安全性检测算法的编程 cout<<'n'<<" 进入安全性检测 !"< Work[j]) HasResource=false; if(HasResource) { for(j=0;j "; } cout<<'n'<<" 已通过安全性测试 !"< Need[Request_PROCESS][i]) { cout<<"n第"< Available[i]) { cout<<"n第"< >c; if(c=='n') break; cout< 一年一度的课程设计,却不知道根本原理,友情提醒各位用户,当我们输入数值时,如果我们没有出现安全序列,说明发生了死锁。
如果有问题,欢迎指正,有问题请教也可以,还有本代码只是借鉴别人的,并非本人一瘦创作,只是在原有的基础上进行了改编。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)