版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上淮海工学院计算机科学系实验报告书课程名: 操作系统原理 题 目: 实验二 银行家算法 班 级: Z软件161 学 号: 姓 名: 陈真杰 评语:成绩: 指导教师: 批阅时间: 年 月 日专心-专注-专业1、实验目的与要求银行家算法是操作系统中避免死锁的典型算法,用C/C+语言编写一个银行家算法的模拟程序。通过本实验可以加深对银行家算法的步骤和相关数据结构用法的更好理解。2、 实验内容或题目用C/C+语言编写一个简单的银行家算法模拟程序,用银行家算法实现资源分配。程序能模拟多个进程共享多种资源的情形。进程可动态地申请资源,系统按各进程的申请动态地分配资源。要求程序具有显
2、示和打印各进程的某一时刻的资源分配表和安全序列;显示和打印各进程依次要求申请的资源数量以及为某进程分配资源后的有关资源数据的情况。实验说明:初始时每个进程运行过程中的最大资源需求量Maxi,j和系统已分配给该进程的资源量Allocationi,j,可利用资源数量Availablej均为已知(这些数值可以在程序运行时动态输入),而算法中其他数据结构的值(Needi,j)则需要由程序根据已知量的值计算产生。3、 实验步骤(1) 认真理解好课本中银行家算法的实例。(2) 根据课本中银行家算法的描述,画出程序流程图。(3) 按照程序流程图,用C/C+语言编程并实现。4、流程图5、源代码与测试数据与实验
3、结果(可以抓图粘贴) 源代码如下所示:#include "string.h"#include "iostream"using namespace std;#define FALSE 0#define TRUE 1#define W 10#define R 20int M=4 ; /总进程数int N=3 ; /资源种类int ALL_RESOURCE3=9,3,6;/各种资源的数目总和int MAX43=3,2,2,6,1,3,3,1,4,4,2,2; /M个进程对N类资源最大资源需求量int AVAILABLER; /系统可用资源数int ALLOCA
4、TION43=1,0,0,6,1,2,2,1,1,0,0,2; /M个进程已经得到N类资源的资源量int NEEDWR; /M个进程还需要N类资源的资源量int RequestR; /请求资源个数void showdata() /函数showdata,输出资源分配情况int i,j;cout<<"各种资源的总数量(all):"cout<<" "for (j=0;j<N;j+)cout<<" "<<ALL_RESOURCEj;cout<<" "cout
5、<<endl<<endl;cout<<"系统目前各种资源可用的数为(available):"cout<<" "for (j=0;j<N;j+)cout<<" "<<AVAILABLEj;cout<<" "cout<<endl<<endl;cout<<" 各进程已经得到的资源量(allocation): "<<endl<<endl;cout<&
6、lt;" 资源0"<<" 资源1"<<" 资源2"<<endl;for (i=0;i<M;i+)cout<<"进程p"<<i<<": "for (j=0;j<N;j+)cout<<ALLOCATIONij<<" "cout<<endl;cout<<endl;cout<<" 各进程还需要的资源量(need):"<
7、;<endl<<endl;cout<<" 资源0"<<" 资源1"<<" 资源2"<<endl;for (i=0;i<M;i+)for (i=0;i<M;i+)cout<<"进程p"<<i<<": "for (j=0;j<N;j+)cout<<NEEDij<<" "cout<<endl; cout<<endl;
8、void changdata(int k) /分配资源int j;for (j=0;j<N;j+)AVAILABLEj=AVAILABLEj-Requestj; ALLOCATIONkj=ALLOCATIONkj+Requestj; NEEDkj=NEEDkj-Requestj;void rstordata(int k) /恢复现场int j;for (j=0;j<N;j+) AVAILABLEj=AVAILABLEj+Requestj; ALLOCATIONkj=ALLOCATIONkj-Requestj; NEEDkj=NEEDkj+Requestj;int chkerr(in
9、t s) /函数chkerr,检查是否安全 int WORK,FINISHW; int i,j,k=0; for(i=0;i<M;i+)FINISHi=FALSE; for(j=0;j<N;j+) WORK=AVAILABLEj; i=s; do if(FINISHi=FALSE&&NEEDij<=WORK) WORK=WORK+ALLOCATIONij; FINISHi=TRUE; i=0; else i+; while(i<M); for(i=0;i<M;i+) if(FINISHi=FALSE) cout<<endl; cout&
10、lt;<" 系统不安全! 本次资源申请不成功!"<<endl; cout<<endl; return 1; cout<<endl; cout<<" 经安全性检查,系统安全,本次分配成功。"<<endl; cout<<endl; return 0;void bank() /银行家算法主体 int i=0,j=0; char flag='Y' while(flag='Y'|flag='y') i=-1; while(i<0|i&
11、gt;=M) cout<<" 请输入需申请资源的进程号(从P0到P"<<M-1<<",否则重输入!):" cout<<"P"cin>>i; if(i<0|i>=M)cout<<" 输入的进程号不存在,重新输入!"<<endl; cout<<" 请输入进程P"<<i<<"申请的资源数:"<<endl; for (j=0;j<N;j
12、+) cout<<" 资源"<<j<<": " cin>>Requestj; if(Requestj>NEEDij) /若请求的资源数大于进程还需要i类资源的资源量j cout<<" 进程P"<<i<<"申请的资源数大于进程P"<<i<<"还需要"<<j<<"类资源的资源量!" cout<<"申请不合理,出错!请重新选
13、择!"<<endl<<endl; flag='N' break; else if(Requestj>AVAILABLEj) /若请求的资源数大于可用资源数 cout<<" 进程P"<<i<<"申请的资源数大于系统可用"<<j<<"类资源的资源量!" cout<<"申请不合理,出错!请重新选择!"<<endl<<endl; flag='N' break
14、; if(flag='Y'|flag='y') changdata(i); /调用changdata(i)函数,改变资源数 if(chkerr(i) /若系统安全 rstordata(i); /调用rstordata(i)函数,恢复资源数 showdata(); /输出资源分配情况 else /若系统不安全 showdata(); /输出资源分配情况 else /若flag=N|flag=n showdata(); cout<<endl; cout<<" 是否继续银行家算法演示,按'Y'或'y'键继续,按'N'或'n'键退出演示: " cin>>flag;/主函数int main() int i=0,j=0,p; /初始化资源数量for (j=0;j<N;j+) p=ALL_RESOURCEj; for (i=0;i<M;i+) p=p-ALLOCATIONij;/减去已经被占据的资源 AVAILABLEj=p; if(AVAILABLEj<0) AVAILABLEj=0; for (i=0;i<M;i+) for(j=0;j<N;j+) NEEDij=MAXij-ALLOCAT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年下学期高二化学化学游戏中的化学试题
- 2025年超星尔雅学习通《智能制造技术发展趋势与未来产业布局预测》考试备考题库及答案解析
- 2025年超星尔雅学习通《跨界合作与品牌联动营销》考试备考题库及答案解析
- 小学科学课程主题教案设计
- 房地产项目开发管理流程优化
- 骨科考试题库及考点归纳
- 合同解除协议书范本及法律注意事项
- 建筑施工现场安全监管规范
- 小学语文重点课文教案设计模板
- 企业合同管理流程优化
- 建筑工程质量员培训课件
- 2025年中考语文备考之非连续性文本阅读7大考点+4道中考题
- 2025天津市滨海新区辅警考试试卷真题
- 2022机动车运行安全技术条件
- 水样采集考试题及答案
- 压力焊工培训课件
- 工艺验证检查指南2025
- 箱式变电站安装施工方案
- 蔚来销售工作流程
- 《声音小天地:1 寻找代表家乡的声音》教学设计-2024-2025学年五年级上册综合实践活动沪科黔科版
- 统编版四年级语文上册第三单元主题阅读(含答案)
评论
0/150
提交评论