资源分配和管理的银行家算法 银行家算法实验报告.docxVIP

资源分配和管理的银行家算法 银行家算法实验报告.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
报告创建时间: 报告创建时间:2013.05.16 《操作系统》实验报告 年级、专业、班级实验题目 姓名 资源分配和管理的银行家算法 实验时间 2013.05.14 实验地点 主教 0416 实验成绩 实验性质 □验证性 □设计性 □综合性 教师评价: □ 算法/实验过程正确; □ 源程序/实验内容提交 □ 程序结构/实验步骤合理; □ 实验结果正确; 其他: □ 语法、语义正确; □ 报告规范; 评价教师签名: 一、实验目的 学习分配和管理资源的银行家算法,了解死锁避免方法。 二、实验项目内容 编写程序实现教材 6.3.2 节的银行家算法程序功能: 程序随机生成进程数量(10)、资源种类(3)、每类资源总数量 (3)、进程的申请资源的数量(0)、已分配资源的数量、可用资源数量等; 输出每一个进程的资源分配情况; 输出每一步的资源分配情况和进程执行序列(安全序列)。 指出每一次资源分配后系统是否处于安全状态。 报告创建时间: 报告创建时间:2013.05.16 三、实验过程或算法(源程序) 算法思路: 先对用户提出的请求进行合法性检查,即检查请求是否大于需要的, 是否大于可利用的。若请求合法,则进行预分配,对分配后的状态调用安全性算法进行检查。若安全,则分配;若不安全,则拒绝申请,恢复到原来的状态,拒绝申请。 银行家算法步骤 如果Request[i]<=Need,则转向步骤(2);否则,认为出错,因为它所需要的资源数已超过它所宣布的最大值。 如果 Request[i]<=Available,则转向步骤(3);否则,表示系统中尚无足够的资源,进程必须等待。 系统试探把要求的资源分配给进程 Pi,并修改下面数据结构中的数值: Available=Available-Request[i]; Allocation=Allocation+Request; Need=Need-Request; (4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。 安全性算法步骤 设置工作向量 ①工作向量 Work。它表示系统可提供进程继续运行所需要的各类资源数目,执行安全算法开始时,Work=Available; ②定义判断一个进程是否执行完毕的方法:boolean isFinished()。 从进程集合中找到一个能满足下述条件的进程: ①process.isFinished()返回值为 true. ②Need=Work 如找到,执行步骤(3);否则,执行步骤(4)。 当进程 P 获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行: Work=Work+Allocation; Allocation += Need; 转向步骤(2)。 如果所有进程的均执行完毕即isAllFinished()返回值为 true,则表示系统处于安全状态;否则,系统处于不安全状态。 数据结构: 3.4. 1 主要用到的数据结构: 保存进程最大资源需求量的矩阵: int[] _maxNeed 保存进程已分配资源量的矩阵: int[] _allocated 保存进程标识符的字符串:String _id 保存系统中各资源总数的矩阵:int[] _totalResource 表示申请资源的进程队列:ArrayListProcess _processes 表示系统资源种类数的整数:int _resourceClassCount 存储执行信息:StringBuffer _executeInfo 3.4. 2 程序模块: 代表进程的类:Process.java 代表银行家算法的类:BankerAlgorithm.java 算法的主界面:BankerUI.java 3.4. 3 各模块间的调用关系: BankerUI 是程序执行的主界面,输入系统资源种类数之后,其通过程序随机生成进程数量(10)、资源种类(3)、每类资源总数量(3)、进程的申请资源的数量( 0)、已分配资源的数量、可用资源数量等。其中所用针对系统进程和资源的操作均需要调用类 BankerAlgorithm 的方法。 主要函数的核心代码: 进行初始化输入的函数 打印输出的函数 利用安全性算法进行检测的函数 进行资源分配的函数 利用行家算法进行判定的函数 注:具体代码请见附录—源程序清单。程序流程图: 1、系统主要过程流程图: 1 1 千 I 各 二 歹 夕 l顷 凯 生完 锋 妥数影砰浸痴唗复 及分配悟况令 l 智 智 刍印子统呈否妄 全( 谝凭马;年 至5 刍印子统呈否 妄 全( 谝凭 马; 年 至5 怠 方法}# 执行安 全彴去程f 泛艺夕 队列 除 i 泪 月 话二 乒 名声 E 退出系统4 l申 诸资荔(诮弓 至 l i严 尘 笞竺 印 i I的 I 纭复工运3元 足 萃 c酶 )J

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档