欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    银行家算法实验设计报告.docx

    • 资源ID:9610987       资源大小:200.97KB        全文页数:13页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    银行家算法实验设计报告.docx

    1、银行家算法实验设计报告实验三 银行家算法班级: xxxxxxxxxxxxxx 姓名: xxxx 学号: xxxxxxxxxxxxxxxxxxxxxxxxx 上级日期: 2018年10月 成绩:_一、 实验目的:银行家算法是避免死锁的一种重要方法,通过一个简单的银行家算法程序加深了解有关资源申请,避免死锁等概念,并体会和了解死锁以及避免死锁的具体实施方法。二、实验内容1、程序流程图系统主要运行过程流程图银行家算法流程图安全性算法流程图2、程序源码1. /#defineM52. /#defineN33. #include/本实验中使用到的库函数4. #include5. #include6. 7.

    2、 intmax51;/开始定义银行家算法中需要用到的数据8. intallocation51;9. intneed51;10. intavailable1;11. intrequest51;12. char*finish5;13. intsafe5;14. intn,i,m;15. intk=0;16. intj=0;17. intwork1;18. intworks51;19. 20. voidline()/美化程序,使程序运行时更加明朗美观21. 22. printf(-n);23. 24. 25. voidstart()/表示银行家算法开始26. 27. line();28. print

    3、f(银行家算法开始n);29. printf(-死锁避免方法n);30. line();31. 32. 33. voidend()/表示银行家算法结束34. 35. line();36. printf(银行家算法结束,谢谢使用n);37. line();38. 39. 40. voidinput()/输入银行家算法起始各项数据41. 42. for(n=0;n5;n+)43. 44. printf(请输入进程P%d的相关信息:n,n);45. printf(Max:);46. for(m=0;m1;m+)47. scanf(%d,&maxnm);48. printf(Allocation:);

    4、49. for(m=0;m1;m+)50. scanf(%d,&allocationnm);51. for(m=0;m1;m+)52. neednm=maxnm-allocationnm;53. 54. printf(请输入系统可利用资源数Available:);55. for(m=0;m1;m+)56. scanf(%d,&availablem);57. 58. 59. voidoutput()/输出系统现有资源情况60. 61. line();62. printf(资源情况MaxAllocationNeedAvailablen);63. printf(进程AAAAn);64. line()

    5、;65. for(n=0;n5;n+)66. 67. printf(P%d%3d%3d%3d,n,maxn0,allocationn0,needn0);68. if(n=0)69. printf(%3d%3dn,available0);70. else71. printf(n);72. 73. line();74. 75. 76. voidchange()/当Requesti,j=Availablej时,系统把资源分配给进程Pi,Availablej和Needi,j发生改变77. 78. for(m=0;m1;m+)79. 80. availablem-=requestim;81. alloc

    6、ationim+=requestim;82. needim-=requestim;83. 84. 85. 86. voidoutputsafe()/输出安全序列的资源分配表87. 88. printf(该安全序列的资源分配图如下:n);89. line();90. printf(资源情况WorkNeedAllocationWork+AllocationFinishn);91. printf(进程AAAAn);92. line();93. for(n=0;n5;n+)94. printf(P%d%9d%3d%3d%5d%12sn,safen,workssafen0,needsafen0,allo

    7、cationsafen0,workssafen0+allocationsafen0,finishn);95. line();96. 97. 98. intcheck()/安全性算法99. 100. printf(开始执行安全性算法n);101. for(m=0;m1;m+)/数组work和finish初始化102. workm=availablem;103. for(n=0;n5;n+)104. 105. finishn=false;106. safen=0;107. 108. k=0;109. for(m=0;m5;m+)110. for(n=0;n5;n+)111. if(strcmp(f

    8、inishn,false)=0&needn0=work0)/查找可以分配资源但尚未分配到资源的进程112. 113. safek=n;/以数组safek记下各个进程得到分配的资源的顺序114. workssafek0=work0;115. 116. 117. work0+=allocationn0;/进程执行后释放出分配给它的资源118. 119. 120. finishn=ture;/finishn变为1以示该进程完成本次分121. k+;122. 123. for(m=0;mP%d-P%d-P%d-P%d,系统是安全的n,safe0,safe1,safe2,safe3,safe4);134

    9、. j=1;135. outputsafe();/输出安全序列的资源分配表136. 137. 138. return1;139. 140. 141. voidmain()/主程序开始142. 143. start();144. for(;j=0;)/确认输入数据的正确性,若输入错误,重新输入145. 146. input();147. printf(以下为进程资源情况,请确认其是否正确:n);148. output();149. printf(数据是否无误:n正确:输入1n错误:输入0n请输入:);150. scanf(%d,&j);151. 152. printf(数据确认无误,算法继续。n

    10、);153. if(check()=0)/若check函数返回值为0,表示输入的初始数据找不到安全序列,无法进行下一步,程序结束154. 155. end();156. exit(0);157. 158. for(;j=1;)/当有多个进程请求资源时,循环开始159. 160. printf(请输入请求资源的进程i(0、1、2、3、4):);/输入发出请求向量的进程及请求向量161. scanf(%d,&i);162. printf(请输入进程P%d的请求向量Request%d:,i,i);163. for(n=0;nneedi0;)/若请求向量大于需求资源,则认为是输入错误,要求重新输入16

    11、6. 167. printf(数据输入有误,请重试!n请输入进程P%d的请求向量Request%d:,i,i);168. for(n=0;n1;n+)169. scanf(%d,&requestin);170. 171. if(requesti0=available0)/判断系统是否有足够资源提供分配172. 173. printf(系统正在为进程P%d分配资源n,i);174. change();/分配资源175. j=0;176. 177. else178. printf(系统没有足够的资源,进程P%d需要等待。n,i);179. if(j=0)/j=0表示系统有足够资源分配的情况180.

    12、 181. printf(当前系统资源情况如下:n);/输出分配资源后的系统资源分配情况182. output();183. if(check()=0)/若找不到安全系列,则之前的资源分配无效184. 185. printf(本次资源分配作废,恢复原来的资源分配状态。n);186. for(m=0;m1;m+)/恢复分配资源前的系统资源状态187. 188. availablem+=requestim;189. allocationim-=requestim;190. needim+=requestim;191. 192. output();/输出系统资源状态193. 194. 195. printf(是否还有进程请求资源?n是:输入1n否:输入0n请输入:);196. scanf(%d,&j);/若还有进程请求资源,j=1,之前的for循环条件满足197. 198. end();199. 二、 实验结果1、初始界面 2、输入界面3进程资源结果 4、安全性算法结果5、全序列资源分配结果


    注意事项

    本文(银行家算法实验设计报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开