ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:102.65KB ,
资源ID:3594573      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3594573.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编程模拟银行家算法文档格式.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

编程模拟银行家算法文档格式.docx

1、否则,该申请暂不能满足。实现银行家算法要有若干数据结构,它们用来表示资源分配系统的状态。令n表示系统中进程的数目,m表示资源的分类数。还需要以下数据结构:1. Available是一个长度为m的向量,它表示每类资源可用的数量。Available j=k,表示rj类资源可用的数量为k。2.Max是一个nm矩阵,它表示每个进程对资源的最大需求。Max i,j=k,表示进程pi至多可以申请k个rj类资源单位。3. Allocation是一个nm矩阵,它表示当前分给每个进程的资源数目。Allocation i,j=k,表示进程pi当前分到k个rj类资源。4. Need是一个nm矩阵,它表示每个进程还缺

2、少多少资源。Needi,j=k,表示进程pi尚需k个rj类资源才能完成其任务。显然Needi,j= Max i,j- Allocation i,j。这些数据结构的大小和数值随时间推移而改变。系统所执行的安全性算法描述如下:1.设置2个向量:工作向量Work:它表示系统可提供给进程继续运行所需的各类资源数目,它含有m个元素,在执行安全算法开始时,Work = Available。 Finishi :它表示系统是否有足够的资源分配给进程,使之完成运行。开始时先做Finishi=true。2.从进程集合中找到一个满足下述条件的进程:Finishi=flase;Needi,jWorkj;若找到,则执行

3、步骤3,否则,执行步骤4。3.当进程pi获得资源后,可顺利执行,直至完成,并释放分配给它的资源。4.如果所有进程的Finishi=true都满足。则表示系统处于安全状态;否则,系统处于不安全状态。2. 详细设计2.1 程序源代码#includestringstdiousing namespace std;#define False 0#define True 1int Max100100=0;/各进程所需各类资源的最大需求int Avaliable100=0;/系统可用资源char name100=0;/资源的名称int Allocation100100=0;/系统已分配资源int Need1

4、00100=0;/还需要资源int Request100=0;/请求资源向量int temp100=0;/存放安全序列int Work100=0;/存放系统可提供资源int M=100;/作业的最大数为100int N=100;/资源的最大数为100void showdata()/显示资源矩阵 int i,j; cout系统目前可用的资源Avaliable:endl; for(i=0;iN;i+)namei ; for (j=0;jj+)Avaliablej/输出分配资源 Max Allocation Need进程名 for(j=0;3;j+) M;i+)MaxijAllocationijNe

5、edijint changdata(int i)/进行资源分配 int j;for (j=0;j+) Avaliablej=Avaliablej-Requestj; Allocationij=Allocationij+Requestj; Needij=Needij-Requestj;return 1;int safe()/安全性算法int i,k=0,m,apply,Finish100=0;int flag=0;Work0=Avaliable0;Work1=Avaliable1;Work2=Avaliable2;for(i=0;i+) apply=0; if (Finishi=False&=W

6、orkj) apply+; if(apply=N) for(m=0;mm+) Workm=Workm+Allocationim;/变分配数 Finishi=True; tempk=i; i=-1; k+; flag+; if(Finishi=False)系统不安全/不成功系统不安全 return -1;系统是安全的!/如果安全,输出成功分配的序列:i+)/输出运行进程数组tempi; if(iM-1) cout return 0;void share()/利用银行家算法对申请资源对进行判定char ch;int i=0,j=0;ch=ycout请输入要求分配的资源进程号(0-M-1i;/输入须

7、申请的资源号请输入进程 申请的资源:for(j=0;namejNeedij)/判断申请是否大于需求,若大于则出错 进程 申请的资源大于它需要的资源 分配不合理,不予分配! ch=n break; else Avaliablej)/判断申请是否大于当前资源,若大于则 /出错进程申请的资源大于系统现在可利用的资源 分配出错,不予分配! if(ch=) changdata(i);/根据进程需求量变换资源 showdata();/根据进程需求量显示变换后的资源 safe();/根据进程需求量进行银行家算法判断void addresources()/添加资源 int n,flag;请输入需要添加资源种类

8、的数量:cinn;flag=N;N=N+n;for(int i=0;名称:nameflag;数量:Avaliableflag+;showdata();safe();void changeresources()/修改资源函数 for(int i=0;AvaliableiAvaliable1Avaliable2;经修改后的系统可用资源为for (int k=0;kk+)namekAvaliablekvoid delresources()/删除资源char ming;int i,flag=1;请输入需要删除的资源名称:doming; if(ming=namei) flag=0;if(i=N)该资源名

9、称不存在,请重新输入:while(flag);for(int j=i;N-1; namej=namej+1; Avaliablej=Avaliablej+1;N=N-1;void addprocess()/添加作业 int flag=M;M=M+1;请输入该作业的最大需求量MaxMaxflagi; Needflagi=Maxflagi-Allocationflagi;int main()/主函数 int i,j,number,choice,m,n,flag;*资源管理系统的设计与实现*请首先输入系统可供资源种类的数量:N=n;资源i+1的名称: namei=ming;资源的数量:number;

10、 Avaliablei=number;请输入作业的数量:m;M=m;请输入各进程的最大需求量(*nMaxij) flag=1; Needij=Maxij-Allocationij; if(flag)申请的资源大于最大需求量,请重新输入!n/显示各种资源/用银行家算法判定系统是否安全 while(choice)*银行家算法演示* 1:增加资源 2:删除资源 3:修改资源 4:分配资源 5:增加作业 0:离开 *请选择功能号:choice; switch(choice) case 1: addresources();break; case 2: delresources(); case 3: ch

11、angeresources(); case 4: share(); case 5: addprocess(); case 0: choice=0; default:请正确选择功能号(0-5)! return 1;3. 调试及运行结果3.1 程序调试及运行结果经过调试,改正了越界错误,定义错误,死循环和一些语法错误。程序最终运行成功。检测结果如下: 总结和体会 一周的课程设计结束了。在这一周里,我做一个模拟银行家算法。我觉得在着手设计前设计的思路是很重要的。只有思路清晰才能进行下一阶段的设计。这样才能完成整个程序的设计,完成整个文报告的书写。课程设计这几天学到的东西还真不少。以前不清楚的现在都暴露出来了。以前认为学了没用的东西现在也用到了。这次的课程设计使我进一步了解了调度与死锁的问题。以及有关资源申请的问题、避免死锁的具体实施方法。深入了解了银行家算法的资源申请和资源分配的过程及原则。保证系统处于安全状态。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2