文档介绍:
课程设计报告
课程设计名称共享资源分配与银行家算法
系(部)
专业班级
姓名
学号
指导教师
年月日
一、课程设计目的和意义3
二、方案设计及开发过程
课题设计背景
算法描述
数据结构
主要函数
、运行结果及说明
沉_bink,ewe
HS输入总逬程数;
请输入资源旳肿奠数;
iff俵次输入各类资源的总數量,'BS5CB3105?
请依次输入各进程所需要的最大资源数量r即设置矩阵唤:
?53
?22
0Z
■423
商IS次输入各进程己经占据的各娄资源敕星即设置藐阵泡皿准i时019
Ha
捷豆经吳全世检查发理匚系蜒的初始伏蟲安金!…
・"~~«~--■BSI^M_l_!l_|_|■rHf"■W'■_L_lS^B_I:_h_|_■
H卩矩薛血丄“匕皿三"为[
:
lt5^F53Slf2即冋龄gg"加
鐸轨曇繁気生郎狀分配應直且资源分配状况如下所示,
fli24FFFFFJF1JJIJTrJJJ—
Rp^ptalIdcafi&n为■-
艮卩咲E阵neadj^l;
设銅14)浜
岀即向srall-TESGiArce^j^®1=S资癒三?
3ftH11
?a6a4
02212
10010
***@332-6
42013
mVB604-
012-34■_■;■i■■:一r二一
可用数量‘即闾量删嗣1龈“为土资?丽B
后齐4,1:1鲁功耒后数贸覺之总n髯回的H邠进收翁源在矍凉
.
即iSjwall—i^agGurce为:
5资蘇#:?
银行家算法就是当接收到一个系统资源的分配后找到一个安全序列,使得进程间不会发生死锁,若发生死锁则让进程等待。
五、课程设计总结
通过本次银行家算法实验,加深了我对银行家算法的了解,掌握了如何利用银行家算法避免死锁。实验中遇到点问题,通过查阅资料、询问老师顺利解决。通过这次的实践,使我的理论知识更加的牢固。
附录
程序源码:
#include<iostream>usingnamespacestd;
#defineFALSE0
#defineTRUE1
#defineW10//最大进程数W=10
#defineR20//最大资源总数R=20
intM;
intN;
intALL_RESOURCE[W];
intAVAILABLE[R];//可利用资源向量
intMAX[W][R];//最大需求矩阵
intALLOCATION[W][R];//分配矩阵intNEED[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<<"请输入资源的种类数:"<<en