课内实验报告模板-银行家算法new.doc_第1页
课内实验报告模板-银行家算法new.doc_第2页
课内实验报告模板-银行家算法new.doc_第3页
课内实验报告模板-银行家算法new.doc_第4页
课内实验报告模板-银行家算法new.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一. 实验目的及实验环境1. 实验目的通过本次实验,进一步掌握进程的相关概念,加深对进程银行家算法的理解。2.实验环境Windows XP程序编译环境:Visual C+ 6.0编程语言:C+测试平台:Windows XP二. 实验内容1.选取一种熟悉的编程语言,编写程序模拟实现银行家算法。三方案设计1.数据结构的实现/*见书的源代码,并对数据结构中每个成员含义进行解释*/2.程序概要设计1) 各个函数功能描述AVAILABLEMAXRESOURCE:可利用资源向量MAXMAXPROCESSMAXRESOURCE:最大需求矩阵ALLOCATIONMAXPROCESSMAXRESOURCE:分配矩阵NEEDMAXPROCESSMAXRESOURCE:需求矩阵REQUESTMAXPROCESSMAXRESOURCE:进程需要资源数bool FINISHMAXPROCESS :系统是否有足够资源分配int pMAXPROCESS :记录序列void Init():初始化bool Safe():安全性检查void Bank():银行家算法2)各个函数之间的调用关系图3. 核心函数算法流程图1) safe( ) 安全性检查2) bank( ) 银行家算法四测试数据及运行结果/*测试数据和运行结果通过程序截图来说明*/五总结1 实验过程中遇到的问题及解决办法;输入矩阵时出现错误,以此输入数据即可解决2对设计及调试过程的心得体会。六附录:源代码 #include using namespace std;#define MAXPROCESS 50#define MAXRESOURCE 100int AVAILABLEMAXRESOURCE;int MAXMAXPROCESSMAXRESOURCE;int ALLOCATIONMAXPROCESSMAXRESOURCE;int NEEDMAXPROCESSMAXRESOURCE;int REQUESTMAXPROCESSMAXRESOURCE;bool FINISHMAXPROCESS;int pMAXPROCESS;int m,n;void Init();bool Safe();void Bank();int main() Init(); Safe(); Bank();void Init() int i,j;cout银行家算法endl;coutm;coutn;cout请输入每个进程最多所需的各资源数,按照 m x n 矩阵输入endl;for(i=0;im;i+)for(j=0;jMAXij;cout请输入每个进程已分配的各资源数,按照 m x n 矩阵输入endl;for(i=0;im;i+)for(j=0;jALLOCATIONij; NEEDij=MAXij=ALLOCATIONij; if(NEEDij0) cout您输入的第i+1个进程所拥有的第j+1个资源数错误,请重新输入:endl; j-; continue;cout请输入各资源现有数目:endl;for(i=0;iAVAILABLEi;void Bank() /银行家算法/ int i,cusneed; char again; int breakmark=0; while(1) breakmark=0; cout请输入要申请资源的进程号cusneed; cout请输入进程所请求各资源的数量endl; for(i=0;iREQUESTcusneedi; for(i=0;iNEEDcusneedi) cout您输入的请求数超过进程的需求量!请重新输入!AVAILABLEi) cout您输入的请求数超过系统拥有的资源数!请重新输入!endl; breakmark=1; break;/continue; if(breakmark=1) continue; for(i=0;in;i+) AVAILABLEi-=REQUESTcusneedi; ALLOCATIONcusneedi+=REQUESTcusneedi; NEEDcusneedi-=REQUESTcusneedi; if(Safe() cout同意分配请求!endl; else cout您的请求被拒绝!endl; for(i=0;in;i+) AVAILABLEi+=REQUESTcusneedi; ALLOCATIONcusneedi-=REQUESTcusneedi; NEEDcusneedi+=REQUESTcusneedi; for(i=0;im;i+) FINISHi=false; cout您还想再次请求分配吗?是请按y/Y,否请按其他键again; if(again=y|again=Y)continue; break;bool Safe()/安全性检查int i,j,k,l=0;int WORKMAXRESOURCE;for(i=0;in;i+) WORKi=AVAILABLEi;for(i=0;im;i+) FINISHi=false;for(i=0;im;i+) if(FINISHi=true) continue;elsefor(j=0;jWORKj) break;if(j=n) FINISHi=true; for(k=0;kn;k+) WORKk+=ALLOCATIONik; pl+=i; i=-1;else continue;if(l=m)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论