模拟银行家算法实现死锁避免课程设计报告--毕设论文.docVIP

  • 4
  • 0
  • 约1.83万字
  • 约 35页
  • 2016-10-12 发布于辽宁
  • 举报

模拟银行家算法实现死锁避免课程设计报告--毕设论文.doc

模拟银行家算法实现死锁避免课程设计报告--毕设论文

《操作系统》课程设计报告 院 系:计算机与信息工程学院 题 目 评分表: 课题名称 指导教师 评 语 成绩评定 姓 名 成 绩 学 号 日期 年 月 日 目录 题 目:模拟银行家算法实现死锁避免 1 评分表: 2 一 课程设计目的 3 二 课程设计内容 3 三 课程设计环境 4 四 课程设计步骤 4 41.需求分析 4 4.1.1 问题的提出 4 4.1.2 银行家算法原理 4 4.1.3银行家算法详细解析 5 4.1.4 银行安全性算法目的 6 4.2概要设计 6 4.2.1 功能模块设计如下: 6 4.2.2 功能模块描述 7 4.3详细设计 7 4.3.1基本数据结构的设计 7 4.3.2算法的设计 8 五 课程设计结果 9 5.1运行结果 9 5.2测试分析 12 六 课程设计心得与体会 12 总结 12 七 参考文献 13 八 程序清单 14 8.1 操作主界面代码: 14 8.2 功能实现代码: 17 一 课程设计目的 在熟练掌握死锁发生原理和解决死锁问题的基础上,利用一种程序设计语言模拟实现利用银行家算法实现死锁避免,一方面加深对原理的理解,另一方面提高学生通过编程根据已有原理解决实际问题的能力,为学生将来进行系统软件开发和针对实际问题提出高效的软件解决方案打下基础。 二 课程设计内容 模拟实现银行家算法对系统资源进行分配,以防止死锁的出现。本课题肯定不可能实现对实际操作系统的资源管理,而是通过对模拟资源数据的处理,检测银行家算法在防止死锁出现的作用。 银行家算法描述: 第一部分:银行家算法(扫描) 1.如果Request=Need,则转向2;否则,出错 2.如果Request=Available,则转向3,否则等待 3.系统试探分配请求的资源给进程 4.系统执行安全性算法 第二部分:安全性算法 1.设置两个向量 (1).工作向量:Work=Available(表示系统可提供给进程继续运行所需要的各类资源数目) (2).Finish:表示系统是否有足够资源分配给进程(True:有;False:没有).初始化为False 2.若Finish[i]=FalseNeed=Work,则执行3;否则执行4(i为资源类别) 3.进程P获得第i类资源,则顺利执行直至完成,并释放资源: Work=Work+Allocation; Finish[i]=true; 转2 请充分理解以上银行家算法描述的核心思想。(详细银行家算法描述见p95) 三 课程设计环境 Windows操作系统 java语言 eclipse编程工具 四 课程设计步骤 41.需求分析 4.1.1 问题的提出 银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系银行家算法统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。为实现银行家算法,系统必须设置若干数据结构。要解释银行家算法,必须先解释操作系统安全状态和不安全状态。 我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。 为保证资金的安全,银行家规定: (1) 当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客; (2) 顾客可以分期贷款,但贷款的总数不能超过最大需求量; (3) 当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款; (4) 当顾客得到所需的全部资金后,一定能在有限的时间里归还所有的资金.   操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程本次申请的资源数是否超过了该资源所剩余的总量。若超过则拒绝分配资源,若能满足则按当前的申请量分配资源,否则也要推迟分配。(1)设置两个工作向量Work=AVAILABLE;FINISH   (2)从进程集合中找到一个满足下述条件的进程,   FINISH==false; NEED=Work;   如找到,执行(3);否则,执行(4)   (3)设进程获得资源,可顺利执行,直至完成,从而释放资源。   Work+=ALLOCA

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档