解决死锁课程设计报告修改版.doc

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
解决死锁课程设计报告修改版

计算机科学与工程学院 课程设计报告 题目全称: 避免死锁的算法的设计与实现 9 10 摘 要 Dijkstra的银行家算法是最有代表性的避免死锁的算法,该算法由于能用于银行系统现金贷款的发放而得名。银行家算法是在确保当前系统安全的前提下推进的。对进程请求先进行安全性检查,来决定资源分配与否,从而确保系统的安全,有效的避免了死锁的发生。? 该课程设计在理解和分析了银行家算法的核心思想以及状态的本质涵义的前提下,对算法的实现在总体上进行了设计,包括在对算法分模块设计,并对各个模块的算法思想通过流程图表示,分块编写代码,并进行测试,最后进行程序的测试,在设计思路上严格按照软件工程的思想执行,确保了设计和实现的可行,可信。代码实现采用C语言。 关键词:银行家算法、死锁、避免死锁、安全性序列 目录 第一章 绪论 1 1.1 选题背景及意义 1 1.2 国内外研究现状 1 1.3 主要内容与章节安排 2 1.4 本章小结 2 第二章 避免死锁的算法的需求分析 3 2.1 环境需求 3 2.2 功能需求 3 2.3 性能需求 3 2.4 本章小结 4 第三章 避免死锁算法的设计 5 3.1 总体设计 5 3.2 功能模块设计 5 3.3 本章小结 6 第四章 避免死锁的算法的实现 8 4.1 开发环境介绍 8 4.2 主要功能模块的实现 8 4.3 本章小结 15 第五章 测试及成果展示 16 5.1 测试环境 16 5.2 测试用例和结果 16 5.3 成果展示 24 5.4 本章小结 28 第六章 总结与展望 29 附录 30 参考文献 37 第一章 绪论 1.1 选题背景及意义 操作系统的基本特征是并发与共享。系统允许多个进程并发执行,并且共享系统的软、硬件资源。为了最大限度的利用计算机系统的资源,操作系统应采用动态分配的策略,但是这样就容易因资源不足,分配不当而引起资源竞争,导致“死锁”。而本次课程设计就是得用银行家算法来避免“死锁”。银行家算法就是一个分配资源的过程,使分配的序列不会产生死锁。此算法的中心思想是:按该算法分配资源时,每次分配后总存在着一个进程,如果让它单独运行下去,必然可以获得它所需要的全部资源,也就是说,它能结束,而它结束后可以归还这类资源以满足其他申请者的需要。 对于操作系统来说,如果产生死锁的时候,操作系统不采取任何特别措施,这种阻塞将会永远存在,最终导致整个系统陷入瘫痪状态。如果操作系统采用单进程,也就不会存在死锁问题,但是,现在由于现在科技的迅速发展,单线程已经远远不能满足现今人们对速度和性能的要求了,所以多线程势不可挡的迈入了当今操作系统的时代,但是,由于多个进程同时请求资源,很容易导致死锁,由此可见,一种优秀的死锁避免算法对于现今社会是越来越重要了。而本次课程设计的主题就是实现一种“死锁”避免算法即银行家算法,以适应社会的需求,满足操作系统日益的发展需求。 1.2 国内外研究现状 1.死锁的产生的四个条件: (1)互斥条件:指进程对所分配到的资源进行排它性使用 。 (2)请求和保持条件:指进程已经保持了至少一个资源,但又提出了新的资源请求 (3)不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。 (4)环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链。 2.解决死锁的方法: (1)预防死锁:是通过设置某些限 制条件,去破坏产生死锁的四个必要条件中的一个或几个条件,来预防发生死锁。 (2)避免死锁:是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。 (3)检测死锁:通过系统所设置的检测机构,及时地检测出死锁的发生,并精确地确定与死锁有关的进程和资源; (4)解除死锁:当检测到系统中已发生死锁时,须将进程从死锁状态中解脱出来。常用的实施方法是撤消或挂起一些进程 现在国内外的解决死锁的方法都符合以上4种方法中的任何一种。最具代表性的避免死锁的方法就是Dijkstra的银行家算法,该算法可用于银行家发放一笔贷款前,预测该笔贷款是否会引起银行资金周转困难。这里银行资金就类似于计算机系统里的资源,贷款类似于计算机的资源分配。银行家算法能预测一笔贷款业务对银行是否安全,也能预测一次资源分配对计算机系统是否安全。 1.3 主要内容与章节安排 本文的组织结构为:第一章为绪论,第二章需求分析内容,第三章是避免死锁算法的设计,第四章是算法的具体实现,第五章是软件实现后的测试,包过测试用例和测试结果,第六章节为本次论文的总结,最后是附录为软件源代码和参考文献。 第一章绪论,主要是介绍本次课程设计的背景,国内外现状。 第二章需求分析,主要介绍算法应该实现的功能需求,以及算法应该改满足的性能要求。 第

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档