版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统课程设计报告闽江学院计算机学院 08级网络专业题目 编程模拟银行家算法学生 大熊学号 56指导教师 徐向英2010年7月2日设计题目:编程序模拟银行家算法设计目的1、银行家算法是避免死锁的一种重要方法,本实验要求用级 语言编写和调试一个简单的银行家算法程序。加深了解有关资源申 请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。2、提高学生的程序设计能力、提高算法设计质量与程序设计素 质;设计任务一、要求1. 复习银行家算法,设计一个具有若干(不少于 3种)资源和若干 (不少于5个)进程的系统。2. 定义系统的初始状态,即进程获得的资源数,还需要的资源数以 及系统可用的资源数
2、。3. 以用户输入的方式提出资源请求,并用银行家算法避免可能发生的死锁,若系统安全,允许用户继续申请资源。4. 设计的系统要求结构清晰,与用户的交互界面友好,能动态地实 现资源的申请和分配。二、思想将一定数量的资金供多个用户周转使用,当用户对资金的最大申请量不超过现存资金时可接纳一个新客户,客户可以分期借款,但借 款总数不能超过最大的申请量。银行家对客户的借款可以推迟支付, 但是能够使客户在有限的时间内得到借款,客户得到所有的借款后能 在有限的时间内归还。用银行家算法分配资源时,测试进程对资源的最大需求量,若现存资源能满足最大需求就满足当前进程的申请, 否则推迟分配,这样能够 保证至少有一个进
3、程可以得到所需的全部资源而执行到结束,然后归还资源,若OS能保证所有进程在有限的时间内得到所需资源则称系 统处于安全状态。设计思路和过程1. 概要设计1.1程序流程图 2. I第占垣|田1.2设计原理及方法银行家算法的设计思想是:当用户申请一组资源时,系统必须 做出判断;如果把这些资源分出去,系统是否还处于安全装他。若是, 就可以分出这些资源;否则,该申请暂不能满足。实现银行家算法要有若干数据结构,它们用来表示资源分配系 统的状态。令n表示系统中进程的数目,m表示资源的分类数。还需 要以下数据结构:1. Available是一个长度为m的向量,它表示每类资源可用的数量。Available j=
4、k ,表示rj类资源可用的数量为k。2. Max是一个nx m矩阵,它表示每个进程对资源的最大需求。Max i , j=k,表示进程pi至多可以申请k个rj类资源单位。3. Allocation 是一个n x m矩阵,它表示当前分给每个进程 的资源数目。Allocation i , j=k,表示进程pi当前分到k个rj 类资源。4. Need是一个nx m矩阵,它表示每个进程还缺少多少资源。 Needi , j=k ,表示进程pi尚需k个rj类资源才能完成其任务。显 然 Needi , j= Max i , j- Allocation i , j。这些数据结构的大小和数值随时间推移而改变。系统
5、所执行的安全性算法描述如下:1. 设置2个向量:工作向量 Work:它表示系统可提供给进程 继续运行所需的各类资源数目,它含有m个元素,在执行安全算法开 始时,Work = Available 。Finishi :它表示系统是否有足够的资源分配给进程,使 之完成运行。开始时先做Finishi=true 。2. 从进程集合中找到一个满足下述条件的进程:Finishi=flase ; Needi,j < Workj;若找到,则执行步骤 3, 否则,执行步骤4。3. 当进程pi获得资源后,可顺利执行,直至完成,并释放分 配给它的资源。4. 如果所有进程的Finishi=true 都满足。则表示
6、系统处于 安全状态;否则,系统处于不安全状态。2.详细设计2.1程序源代码#include<iostream>#include<string>#include<stdio>using namespace std;#define False 0#define True 1int Max100100=0;/各进程所需各类资源的最大需求int Avaliable100=0;/ 系统可用资源char name100=0;/ 资源的名称int Allocation100100=0;/系统已分配资源int Need100100=0;/还需要资源int Request10
7、0=0;/请求资源向量int temp100=0;/存放安全序列int Work100=0;/存放系统可提供资源int M=100;/作业的最大数为 100int N=100;/资源的最大数为 100void showdata()/显示资源矩阵int i,j;cout<<" 系统目前可用的资源 Avaliable:"<<endl;for(i=0;i<N;i+)cout«namei«" cout«endl; for (j=O;jN;j+) cout«Avaliablej«"&q
8、uot;/输出分配资源cout«endl; cout«" Max Allocation Need"«endl; cout«" 进程名 for(j=0;j3;j+) for(i=0;i<N;i+) cout«namei«" cout«" ) cout«endl; for(i=0;i<M;i+) cout«" "«i«"";for(j=0;j<N;j+) cout«Maxi
9、j«" cout«" for(j=0;j<N;j+) cout«Allocationij«" cout«" for(j=0;j<N;j+) cout«Needij«" cout«endl; ) ) int changdata(int i)/进行资源分配 intj; for (j=O;jM;j+) Avaliablej=Avaliablej-Requestj; Allocationij=Allocationij+Requestj; Needij=Needi
10、j-Requestj; ) return 1; ) int safe()/安全性算法 int i,k=0,m,apply,Finish100=0; intj; int flag=0; Work0=Avaliable0; Work1 =Avaliable1 ;Work2=Avaliable2;for(i=0;i<M;i+)(apply=0;for(j=0;j<N;j+)if (Finishi=False&&Needij<=Workj) apply+;if(apply=N)for(m=0;m<N;m+)Workm=Workm+Allocationim;/变分
11、配数Finishi=True; tempk=i; i=-1; k+; flag+; for(i=0;i<M;i+) if(Finishi=False) cout<<"系统不安全"<<endl;/不成功系统不安全return -1; cout<<" 系统是安全的!"<<endl;/如果安全,输出成功cout<<" 分配的序列:”;for(i=0;i<M;i+)/输出运行进程数组cout<<tempi; if(i<M-1) cout<<”->
12、”;cout<<endl; return 0;void share()/利用银行家算法对申请资源对进行判定char ch;int i=0,j=0;ch='y'cout<<"请输入要求分配的资源进程号(0-"<<M-1<<”):"cin>>i;/输入须申请的资源号cout<<"请输入进程"<<i<<" 申请的资源:"<<endl;for(j=0;j<N;j+)cout<<namej<
13、;<":"cin>>Requestj;/输入需要申请的资源for (j=0;j<N;j+)if(Requestj>Needij)/判断申请是否大于需求,若大于则出错cout<<" 进程"<<i<<"申请的资源大于它需要的资源"cout<<"分配不合理,不予分配!"<<endl;ch='n'break;else if(Requestj>Avaliablej)/判断申请是否大于当前资源,若大于则/出错cout
14、<<" 进程"<<i<<"申请的资源大于系统现在可利用的资源"cout<<" 分配出错,不予分配!"<<endl;ch='n'break;if(ch='y') changdata(i);/根据进程需求量变换资源showdata();/ 根据进程需求量显示变换后的资源safe();/根据进程需求量进行银行家算法判断void addresources()/添加资源int n,flag;cout<<"请输入需要添加资源种类的数量
15、:"cin>>n;flag=N;N=N+n;for(int i=0;i<n;i+)cout<<"名称:"cin>>nameflag;cout<<"数量:"cin>>Avaliableflag+;showdata();safe();void changeresources()/修改资源函数cout<<"系统目前可用的资源 Avaliable:"<<endl;for(int i=0;i<N;i+)cout<<namei&l
16、t;<":"<<Avaliablei<<endl;cout<<"输入系统可用资源Avaliable:"<<endl;cin>>Avaliable0>>Avaliable1>>Avaliable2;cout<<"经修改后的系统可用资源为"<<endl;for (int k=0;k<N;k+)cout<<namek<<":"<<Avaliablek<<e
17、ndl;showdata();safe();void delresources()/删除资源char ming;int i,flag=1;cout<<"请输入需要删除的资源名称:"docin>>ming;for(i=0;i<N;i+)if(ming=namei)flag=0;break;if(i=N)cout<<"该资源名称不存在,请重新输入:"while(flag);for(int j=i;j<N-1;j+)namej=namej+1;Avaliablej=Avaliablej+1;N=N-1;showd
18、ata();safe();void addprocess()/添加作业int flag=M;M=M+1;cout<<"请输入该作业的最大需求量Max"<<endl;for(int i=0;i<N;i+)cout<<namei<<":"cin>>Maxflagi;Needflagi=Maxflagi-Allocationflagi;showdata();safe();int main()/ 主函数(int i,j,number,choice,m,n,flag;char ming;cout&l
19、t;<"*资源管理系统的设计与实现*"<<endl;cout<<"请首先输入系统可供资源种类的数量:"cin>>n;N=n;for(i=0;i<n;i+)(cout<<"资源"<<i+1<<"的名称:"cin>>ming;namei=ming;cout<<" 资源的数量:"cin>>number;Avaliablei=number;cout<<endl;cout&l
20、t;<"请输入作业的数量:"cin>>m;M=m;cout<<"请输入各进程的最大需求量("<<m<<"*"<<n<<"矩阵)Max:"<<endl;for(i=0;i<m;i+)for(j=0;j<n;j+)cin>>Maxij;do(flag=0;cout<<"请输入各进程已经申请的资源量("<<m<<"*"<<
21、n<<"矩阵)Allocation:"<<endl;for(i=0;i<m;i+)for(j=0;j<n;j+)(cin>>Allocationij;if(Allocationij>Maxij)flag=1;Needij=Maxij-Allocationij;if(flag)cout<<"申请的资源大于最大需求量,请重新输入!n”;while(flag);showdata();/显示各种资源safe();/用银行家算法判定系统是否安全while(choice)cout<<"*车
22、艮行家算法*cout<<"1:增加资源"<<endl;cout<<"2:删除资源 "<<endl;cout<<"3:修改资源 "<<endl;cout<<"4:分配资源"<<endl;cout<<"5:增加作业 "<<endl;cout<<"0:离开"<<endl;cout<<"*"<<endl;cout<<" 请选择功能号:"cin>>choice;switch(choice)("<<endl;(case 1: addresources();break;c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人理财规划与投资建议课程资料包
- 企业内部审计经理如何成为高级CFO的能力
- 奇虎360公司网络安全审计部工作概览
- 企业形象塑造与企业文化的结合方案
- 中华农业科技发展报告
- 珍惜感情和平共处演讲稿
- 夏天快到来的演讲稿
- 社区公共食堂的食品安全管理制度
- 汽车制动系统原理与维修技术试题
- 老年人健康扶贫演讲稿
- 唐宋词十七讲-(作者:叶嘉莹)
- 新教科版六年级下册科学全册习题(一课一练+单元+期中+期末)
- 2021年丽水学院辅导员招聘考试题库及答案解析
- 量子力学完整版课件
- 生态环境材料 第2章 材料产业与生态环境
- 电费分割单模板
- 新教材教科版五年级上册科学 3-3《我们的水钟》课件
- 婚姻登记处情人节工作总结
- 粮食局关于粮油加工企业统计分析报告
- 株洲市2016-2017学年度
- 26个英文字母大小写笔顺临摹字贴
评论
0/150
提交评论