




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 仓库试题k3及答案
- 2025年青少年创业扶持政策的优势试题及答案
- 2025年物理理解能力题及答案
- 2025年旋律编排技术试题及答案
- 2025年注册土木工程师考试对应知识点试题及答案
- 初级班象棋试题及答案
- 农业电商与食品安全问题探讨试题及答案
- 乐理考试复音技巧试题及答案
- 中国自动光圈定焦镜头行业市场发展前景及发展趋势与投资战略研究报告2025-2028版
- 2025年乐理考试的音程构造分析试题及答案
- 空调移机安装合同协议书范本
- 高中语文说课评价表
- 橡胶止水带施工工艺及质量验收
- 单位车辆领取免检标志委托书范本
- 投资项目敏感性分析模型模板
- 建设工程施工合同(示范文本)(GF-2023-0201)
- 祭舅父文范文三篇
- 一年级语文下册培优辅差记录表(十二篇)
- 跨境电子商务专业人才培养方案(高职)
- 起重吊装工程安全专项施工方案【实用文档】doc
- 化妆品共线生产风险评估报告
评论
0/150
提交评论