




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实习题目:银行家算法设计实现【需求规格说明】对I/O系统的死锁资源的问题的解决主要的方法是银行家算法,单种资源的银行家算法和多种资源的银行家算法的解决思路一致,要求设计实现多种银行家算法,并要求所涉及的模型最少更够满足如下要求:(1) 程序能够根据进程的请求进行判断,给出系统是否安全的的提示,如果安全,要求能够显示一组进程执行的安全序列;(2) 能够根据需要,显示当前系统中各种资源的分配情况;【算法设计】(1)设计思想:1.首先初始化多总资源的总量Alln,及多个进程所需的这些资源的总量Maxij,和当前已分配的资源数Allocationij,并得到这些进程还需资源量Needij,以及每种资源的剩余量Avaliablen等。2.检查一个状态是否安全:查找每个进程中未被满足的资源数是否小于或等于Avaliablej,若是,则apply+。当该进程所有资源都被检查完后,若apply=资源种类,说明它可以获得所需的所有资源并运行结果,并将该进程的finishi=true,表示改进程运行完,在将该进程获得的资源加到Avaliable上,表示为目前可用资源数。最后将i=-1,表示重新执行上诉步骤,直到所有进程都被标记为结束。若apply!=资源种类,说明它不能获得所需的资源,不能运行,则坚持下一个进程。并重新执行上诉步骤,直到所有进程都被标记为结束,或发生死锁,即找不到满足的进程。若所有进程都被标记为结束,则表示该状态是安全的;若发生死锁,则说明该状态不安全。(2)设计表示:下图为银行家算法中判断某一状态是否为安全的算法模块结构图:否是否是IsSafe( )for循环判断每个进程是否能分配仍需的每种资源判断每个进程是否都标记结束该状态为安全,则输出安全的进程执行序列该状态不安全,发生死锁将该进程标记为运行结束,并将其资源释放出去该进程不能得到所需的所有资源,判断下一个进程(3)详细设计表示:下图为IsSave()函数主要的算法流程图:是是是是iM&Finishi=Falseapply+;j+jN&Needij=AvaliablejlseApply=0;apply=NAvaliablem=Avaliablem+Allocationim;Finishi=True;否IM&Finishi=FalseeReturn -1Return 1否【调试报告】主要算法是判断该状态是否为安全状态,因此,在查找每个进程中未被满足的资源数是否小于或等于Avaliablej时,首先是要判断Finishi=False是否为真,当该进程已经运行结束就不需要再执行for循环内的判断。 当有一个进程能分配所需资源而被运行后,需要标记该进程已结束,即finishi=true且需要把该进程的资源释放出来。当这些完成后,需要注意将i=-1,因为此时要重新查找每一个进程,而不是简单的执行下一个循环(会出现问题)。 整个代码都将数组的大小暂定为100,因为一般资源及进程都不会超过100,且不能太大和太小。【用户手册】由于只是简单的win32程序,加ctrl+F5即可运行。其中需要按照提示输入资源种类、每种资源的最大数量、进程数量、及每个进程需要各种资源的总量、和已分配的资源数量,由这些数据进行初始化变量,继而调用showdata()可以显示资源总量、当前每种资源的剩余量、及每个进程所需每种资源的总量的矩阵、已分配每种资源的数量的矩阵、和每个进程还需的每种资源量的矩阵。最后调用IsSave()来判断该状态是否处于安全状态。【附录】主要代码实现:判断该状态是否为安全状态IsSave():int IsSafe()/安全性算法int i,j,k=0,m,apply,Finish100=0;for(i=0;iM;i+)/查找每个进程 if(Finishi=False)/判断该进程是否已经运行结束apply=0;/能满足该进程所需的资源的种类for(j=0;jN;j+)/对该进程的每个资源进行判断if (Needij=Avaliablej)/是否有可用的资源满足 apply+;/有一种资源可以被满足if(apply=N)/如果每种资源都能被满足,则该进程被执行for(m=0;mN;m+)Avaliablem=Avaliablem+Allocationim;/将该进程占用资源释放,变为可用资源 Finishi=True;/标记该进程已经运行结束tempk=i;/存放安全序列i=-1; /从第一个进程开始,重新检查每一个进程k+;for(i=0;iM;i+)if(Finishi=False)/逐一判断每个进程最后是否都被执行结束,若没有则该状态不安全cout系统不安全endl;/不成功系统不安全return -1;/否则系统安全cout系统是安全的!endl;/如果安全,输出成功cout分配的序列:;for(i=0;iM;i+)/输出运行进程数组couttempi;if(iM-1) cout;coutendl;return 0;输出此时的状态showdata():void showdata()/显示资源矩阵int i,j;cout系统的所有资源的总数量All:endl;for(i=0;iN;i+)coutnamei ;coutendl;for (j=0;jN;j+)coutAllj ;/输出分配资源coutendl;cout系统目前可用的资源Avaliable:endl;for(i=0;iN;i+)coutnamei ;coutendl;for (j=0;jN;j+)coutAvaliablej ;/输出分配资源coutendl;cout Max Allocation Needendl;cout进程名 ;for(j=0;j3;j+)for(i=0;iN;i+)coutnamei ;cout ;coutendl;for(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年龄因素对映光参数影响-洞察及研究
- 知识产权贯标培训工作课件
- 家长权益保障-洞察及研究
- 知识产权营销人员培训课件
- 垃圾分类知识培训试题及答案(2025年)
- 钳工模具基础知识培训课件
- 钳工基础知识培训课件教案
- 2025年机电一体化工程师考试模拟试题-控制系统与维护保养
- 钣金课件教学
- 知识产权培训课件发展
- 静配中心应急预案处理流程
- GB/T 21977-2022骆驼绒
- 心理-认识过程课件
- 静脉治疗护理质量评价标准
- 水电清包工合同(3篇)
- 连铸坯质量控制与缺陷控制课件
- 《ACT就这么简单》课件
- 农机行政处罚流程图
- 沥青混合料低温弯曲试验2002363
- 盘阀结构和原理课件
- 《普通逻辑》全册课后练习题参考答案(含原题)
评论
0/150
提交评论