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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

编程序模拟银行家算法范本模板Word格式.docx

1、7 自我评价与总结 8 附录:程序清单,注意加注释(包括关键字、方法、变量等),在每个模块前加注释;三、课程设计步骤及时间进度和场地安排本课程设计将安排在第17周, 教育技术中心。具体安排如下:第一天,下发任务书,学生查阅资料第二天,系统设计和原型开发第三,四天 系统功能实现第五天,系统调试 测试 打包和验收周次星期一星期二星期三星期四星期五第17周第1-8节第18节地点现教241四、课程设计考核及评分标准课程设计考核将综合考虑学生考勤和参与度,系统设计方案正确性,系统设计和开发效果以及课程设计报告书的质量。具体评分标准如下:设置六个评分点(1)设计方案正确,具有可行性、创新性; 25分(2)

2、系统开发效果较好;(3)态度认真、刻苦钻研、遵守纪律; 10分(4)设计报告规范、课程设计报告质量高、参考文献充分 20分(5)课程设计答辩概念清晰,内容正确 10分(6)课程设计期间的课堂考勤、答疑与统筹考虑。 按上述六项分别记分后求和,总分按五级记分法记载最后成绩。优秀(10090分),良好(8089分),中等(7079分),及格(6069分),不及格(059分)1设计题目与要求1。1设计题目1.2实验要求 本实验要求用用c/c+语言在Linux操作系统环境下编写和调试一个简单的银行家算法程序。2 设计思想将一定数量的资金供多个用户周转使用,当用户对资金的最大申请量不现存资金时可接纳一个新

3、客户,客户可以分期借款,但借款总数不能超过最大的申请量。银行家对客户的借款可以推迟支付,但是能够使客户在有限的时间内得到借款,客户得到所有的借款后能在有限的时间内归还。用银行家算法分配资源时,测试进程对资源的最大需求量,若现存资源能满足最大需求就满足当前进程的申请,否则推迟分配,这样能够保证至少有一个进程可以得到所需的全部资源而执行到结束,然后归还资源,若OS能保证所有进程在有限的时间内得到所需资源则称系统处于安全状态。3实验环境系统平台:LINUX开发语言:C 开发工具:PC机一台4数据结构的说明和模块的算法流程图4。1死锁避免:定义:系统设计时确定资源分配算法,保证不发生死锁。具体的做法是

4、破坏产生死锁的四个必要条件之一 1.1破坏“不可剥夺”条件 在允许进程动态申请资源前提下规定,一个进程在申请新的资源不能立即 得到满足而变为等待状态之前,必须释放已占有的全部资源,若需要再重新申请 2破坏“请求和保持”条件 要求每个进程在运行前必须一次性申请它所要求的所有资源,且仅当该进 程所要资源均可满足时才给予一次性分配 4.1.3破坏“循环等待”条件 采用资源有序分配法:把系统中所有资源编号,进程在申请资源时必须严格按资源编号的递增次 、序进行,否则操作系统不予分配.2安全状态与不安全状态 安全状态: 如果存在一个由系统中所有进程构成的安全序列P1,Pn,则系统处于安全状态.一个进程序列

5、P1,Pn是安全的,如果对于每一个进程Pi(1in),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj (j i )当前占有资源量之和,系统处于安全状态 (安全状态一定是没有死锁发生的) 不安全状态:不存在一个安全序列,不安全状态一定导致死锁。3数据结构:(1)可利用资源向量Available是个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目。如果Availablej=K,则表示系统中现有Rj类资源K个.(2)最大需求矩阵Max这是一个nm的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Maxi,j=K,则表示进程i需要Rj类资源的最大数目为K。(

6、3)分配矩阵Allocation这也是一个nm的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数.如果Allocationi,j=K,则表示进程i当前已分得Rj类资源的 数目为K。(4)需求矩阵Need。m的矩阵,用以表示每一个进程尚需的各类资源数。如果Needi,j=K,则表示进程i还需要Rj类资源K个,方能完成其任务.Needi,j=Maxi,j-Allocationi,j4安全性检查算法4.4。1设置两个工作向量Work=AVAILABLE;FINISH2从进程集合中找到一个满足下述条件的进程,FINISH=false;NEED#includestring。hinclude#d

7、efine False 0#define True 1int Max100100=0;/各进程所需各类资源的最大需求int Avaliable100=0;/系统可用资源char name100=0;/资源的名称int Allocation100100=0;/系统已分配资源int Need100100=0;/还需要资源int Request100=0;/请求资源向量int temp100=0;/存放安全序列int Work100=0;/存放系统可提供资源int p100=0;int q100100=0;int z100100=0;int M=100;/作业的最大数为100int N=100;/资

8、源的最大数为100int gg=1;void showdata()/显示资源矩阵 int i,j; coutendl此时刻的资源分配情况为:endl; cout Max Allocation Need Avaliableendl;进程名 ”; for(j=0;j4;j+) for(i=0;iN;i+)namei” ; cout” ”; for(i=0;iM;i+) i” for(j=0;jN;j+)Maxij ”;jN;Allocationij cout” ;Needijif(i=0) for (j=0;jN;Avaliablej/输出分配资源 coutendl;int changdata(i

9、nt i)/进行资源分配 int j;for (j=0;M;j+) /pj=Avaliablej; Avaliablej=AvaliablejRequestj; /qij=Allocationij; Allocationij=Allocationij+Requestj; /zij=Needij; Needij=Needij-Requestj;return 1;int safe()/安全性算法int i,d,k=0,m,h,s,apply,Finish100=0;int j;int flag=0;for(i=0;iN;Worki=Avaliablei;coutendl” 安全性检查 ”endl;

10、” Work Need Allocation Work+Allocation Finishendl;”进程名 for(h=0;h4;h+) for(s=0;sN;s+)names endl;iM;i+) apply=0;j+) if (Finishi=False&Needij=Workj) apply+; if(apply=N) couti ”; for(d=0;dN;d+) coutWorkd” ”;for(d=0;dcoutNeediddN;Allocationid cout” ”; for(m=0;mN;m+) Workm=Workm+Allocationim;Workm” ”; /变分

11、配数 Finishi=True; tempk=i;true”i=1; k+; flag+;for(i=0; if(Finishi=False) Avaliablej=Avaliablej+Requestj; Allocationij=Allocationij-Requestj; Needij=Needij+Requestj;endl系统进入不安全状态!此时系统不分配资源!”/不成功系统不安全 return 0;”此时系统是安全的!/如果安全,输出成功 cout安全序列为:”;iM;i+)/输出运行进程数组tempi; if(iM-1) coutvoid share()/利用银行家算法对申请资源

12、对进行判定char ch;int i=0,j=0;ch=y;endl”请输入要求分配的资源进程号(0-M1i;/输入须申请的资源号”请输入进程 申请的资源:for(j=0;namej cinRequestj;/输入需要申请的资源N; if(RequestjNeedij)/判断申请是否大于需求,若大于则出错endl”进程 ”申请的资源大于它需要的资源 分配不合理,不予分配!”Avaliablej)/判断申请是否大于当前资源,若大于则 /出错”进程”申请的资源大于系统现在可利用的资源 cout” 分配出错,不予分配! ch=n break; if(ch=y) changdata(i);/根据进程需

13、求量变换资源 showdata();/根据进程需求量显示变换后的资源 safe();/根据进程需求量进行银行家算法判断int main()/主函数 int t=1,i,j,number,choice,m,n,flag;char ming;*银行家算法的设计与实现*请首先输入系统可供资源种类的数量:cinn;N=n;in;资源”i+1ming; namei=ming;”资源的数量:”;number; Avaliablei=number;coutendl;请输入作业的数量:cinm;M=m;endl”请输入各进程的最大需求量(m”*n”矩阵)Max:jn;Maxij;do flag=0;请输入各进

14、程已经申请的资源量(*”nMaxij) flag=1; Needij=MaxijAllocationij; if(flag)申请的资源大于最大需求量,请重新输入!n”while(flag);/显示各种资源/用银行家算法判定系统是否安全 while(1) if(t=1)” 利用银行家算法预分配资源 share(); t=0; else break; 是否继续银行家算法?(按 1 键继续,按其它任意键退出): cint; return 1;设计过程中质疑(或答辩)记载:1.银行家算法的主要思想是什么?答:一个进程进入系统时分配资源之前,判断系统是否是安全的,即看它所求的资源是否大于它的最大需求量,若正常,则判断该进程所需剩余剩余量(包括本次申请)是否超出系统所掌握的剩余资源量,若不超出,则分配,否则等待。2。银行家算法的主要问题是什么?要求每个进程必须事先知道资源的最大需求量,而且,在系统运行过程中,考查每个进程对各类资源的申请需花费较多的时间.3.在银行家算法中各个资源存在什么关系?答:该进程所需要的资源数NEEDmn=MAXmn(该进程所需要的最多的资源数)-ALLOCATIONmn(该进程所占有的资源数)指导教师评语:签名: 2014 年 6 月 13 日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1