文档介绍:课程设计报告
课程设计名称共享资源分配与银行家算法
系(部)专业班级姓名学号指导教师
一、课程设计目的和意义3二、方案设计及开发过程3
课题设计背景3
算法描述3
数据结构4
主要函数说明4
算法流程图5三、调试记录与分析四
通过本次银行家算法实验,加深了我对银行家算法的了解,掌握了如何利用银行家算法避免死锁。实验中遇到点问题,通过查阅资料、询问老师顺利解决。通过这次的实践,使我的理论知识更加的牢固。
附录
程序源码:
#include<iostream>usingnamespacestd;#defineFALSE0#defineTRUE1#defineW10//最大进程数W=10
#defineR20//最大资源总数R=20
intM;intN;
//可利用资源向量
最大需求矩阵
[W][R];//分配矩阵
//
//
//
//
需求矩阵
进程请求向量
数据输入
数据显示
进程请求资源数据改变
数据恢复
系统安全性的检测
检测最大需求
检测分配的资源是否合理
intALL_RESOURCE[W];intAVAILABLE[R];intMAX[W][R];//intALLOCATIONintNEED[W][R];intRequest[R];voidinputdata();voidshowdata();
voidchangdata(intk);//voidrestoredata(intk);//intchksec(ints);//intchkmax(ints);//voidbank();//
intmain()
{
inti,j;
inputdata();//安全性算法
for(i=0;i<M;i++)
{j=chksec(i);if(j==0)break;
}
if(i>=M)cout<<"错误提示:经安全性检查发现,系统的初始状态不安全!!!\n"<<endl;else
(cout<<"提示:经安全性检查发现,系统的初始状态安全!"<<endl;bank();
}
return0;}voidinputdata()//数据输入(
inti=0,j=0,p;
cout<<"请输入总进程数:"<<endl;
do{cin>>M;if(M>W)cout<<endl<<"总进程数超过了程序允许的最大进程数,请重新输入:"<<endl;
}while(M>W);
cout<<endl;
cout<<"请输入资源的种类数:"<<endl;
do{cin>>N;if(N>R)
cout<<endl<<"资源的种类数超过了程序允许的最大资源种类数,请重新输入:"<<endl;}while(N>R);
cout<<endl;
cout<<"请依次输入各类资源的总数量,即设置向量all_resource:"<<endl;
for(i=0;i<N;i++)cin>>ALL_RESOURCE[i];
cout<<endl;
cout<<"请依次输入各进程所需要的最大资源数量,即设置矩阵max:"<<endl;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
do{cin>>MAX[i][j];if(MAX[i][j]>ALL_