计算机操作系统 -银行家算法 -vc源程序_免费下载.doc_第1页
计算机操作系统 -银行家算法 -vc源程序_免费下载.doc_第2页
计算机操作系统 -银行家算法 -vc源程序_免费下载.doc_第3页
计算机操作系统 -银行家算法 -vc源程序_免费下载.doc_第4页
计算机操作系统 -银行家算法 -vc源程序_免费下载.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

实验报告2课程 计算机操作系统 实验名称 银行家算法 第 1 页班级 11计本 学号 105032011130 姓名 风律澈 实验日期:2013年11月4日 报告退发 (订正 、 重做) 一、实验目的模拟银行家算法,用银行家算法实现资源分配二、实验内容已知进程P0,P1,P2,P3,P4,有三类系统资源A、B、C的数量分别为10、5、7,在T0时刻的资源分配情况如下图所示:(1)若进程P1请求资源,发出请求向量Request1(1,0,2),编写程序用银行家算法判断系统能否将资源分配给它;(2)若进程P3提出请求Request(1,1,2),用银行家算法程序验证系统能否将资源分配给它。三、实验环境VS2008,window7操作系统4、 实验步骤:/fuction.h/ / 辅助函数 / /*使用说明:拷贝函数,用来初始化work,使之与avialable一致*/void copy(int work3,int available3)for(int i=0;i3;i+)worki=availablei;/*使用说明:检查need=work,如果全部成立,返回1,否则返回0*/int check_need_work(int i,int work3,int need53)for(int j=0;jworkj)return 0;return 1;/*使用说明:用来寻找尝试分配用的进程i,两个条件均满足时即可回收,*/*只要其中一个不满足则不考虑,每个i都无法满足时返回-1表示找不到这种程序*/int find(bool finish5,int work3,int need53)for(int i=0;i5;i+)if(finishi=false&check_need_work(i,work,need)=1)return i;return -1;/*使用说明:用来检查是否所有序列都可以满足true*/int analyze_finish(bool finish5)for(int i=0;i5;i+)if(finishi=false)return 0;return 1;void request(int &i,int &j1,int &j2,int &j3)/ / 输入基本信息 / /couti;coutj1;coutj2;coutj3;/ / 分析申请需求 /void analyze_need(int i,int j1,int j2,int j3,int need53,int &state)if(j1needi0|j2needi1|j3needi2)coutwrong:progress i more than maxavailable0|j2available1|j3available2)coutprogress i need wait.endl;state=2;/ / 尝试分配 /void try_give(int i,int j1,int j2,int j3,int need53,int allocation53,int available3)/ 处理available /available0=available0-j1;available1=available1-j2;available2=available2-j3;/ 处理allocation/allocationi0=allocationi0+j1;allocationi1=allocationi1+j2;allocationi2=allocationi2+j3;/处理need /needi0=needi0-j1;needi1=needi1-j2;needi2=needi2-j3;/ / 安全检查 /void security_check(int available3,int allocation53,int need53) / 数据定义 /int work3;bool finish5=false,false,false,false,false;int result5;int k=0,i=0;copy(work,available);/ 试分配 /while(true)i=find(finish,work,need);if(i!=-1)for(int j=0;j3;j+)workj=workj+allocationij;finishi=true;resultk=i;k+;elsebreak;/ 结论分析 /if(analyze_finish(finish)cout此次请求安全 endl其中一种分配序列为:;for(int i=0;i5;i+)coutresulti ;coutendl;elsecout此次请求不安全endl;/ / 银行家算法 /void bank_arithmetic(int i,int j1,int j2,int j3,int need53,int state,int available3,int allocation53)analyze_need(i,j1,j2,j3,need,state);analyze_available(i,j1,j2,j3,available,state);if(state=0)try_give(i,j1,j2,j3,need,allocation,available);elsereturn;security_check(available,allocation,need);/main.cpp#includeusing namespace std;#includefuction.hvoid main()/ / 变量声明部分 / /int i=0;/申请的进程名int j1=0,j2=0,j3=0;/申请的进程所申请的三向量int state=0;/用以判断停止或者非法int stop=1;/用以作为本次循环调试的终止判断int need53=7,4,3,1,2,2,6,0,0,0,1,1,4,3,1;int allocation53=0,1,0,2,0,0,3,0,2,2,1,1,0,0,2;int available3=3

温馨提示

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

评论

0/150

提交评论