操作系统课程设计___银行家算法.doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
银行家算法 课程设计 班 级:110613 学 号:110613120姓 名:袁超 课程设计的主要内容和要求 (包括原始数据、技术参数、设计要求、工作量要求等) 技术参数: Windows XP系统,VC++6.0开发工具。 设计要求: 设计银行家算法的核心数据结构、安全性检查算法; 画出银行家算法流程图; 编程实现算法功能; 编写课程设计说明书。 工作量要求:完成以上设计要求中的所有算 功能介绍 我设计的银行家算法实现系统是一个进程动态请求资源的模拟系统,实现系统为进城随机产生请求资源的数量,系统通过资源安全性检查,检查是否满足安全要求。若安全,则才分配资源;不安全时,系统恢复申请前的状态;只有当进程满足全部的资源需求时,该进程执行结束,释放所占的资源。 内容介绍 我设计的银行家算法系统主要实验对进程资源的动态分配,对进程尚需的资源再分配,直到进程已获得全部的所需资源时,系统收回对该进程的分配的所有资源。在系统每次分配时,都要通过安全性的检查,只有在安全的状态下,系统才会给进程分配资源,否则,恢复到原来的进程状态。 设计目的 通过银行家算法设计与实现,可以加深学生对死锁的理解,掌握死锁的预防、避免、检测和解除的基本原理,重点掌握死锁的避免方法—银行家算法。使学生初步具有研究、设计、编制和调试操作系统模块的能力。 设计要求 系统在进行资源分配的过程中,允许进程动态的申请资源,为了避免发生死锁,在分配资源前要进行安全性检查,若此次分配不会导致系统进入不安全状态,便将资源分配给进程,否则,进程等待。 设计一个进程动态请求资源的模拟系统,实现随机产生进程请求资源的数量;资源安全性检查算法;资源的分配算法;以及输出显示每次请求的结果和系统资源的状态 设计思想 开始时,输入当前进程资源的状态以及整个系统的资源使用情况,即进行初始化安全性检查;如果是不安全状态,重新初始化系统;否则,给进程分配资源,并使用银行家算法进行检测,输出当前系统的状态和安全序列;如果是安全状态,系统继续从等待队列中提取等待进程进行检查,并且再分配所需的资源,当所需的资源已经满足进程所需资源时,便释放所占的资源;如果是不安全状态,进程恢复到原先的状态。 程序流程图 程序流程图包括:主程序流程图和各功能模块的流程图。 主程序流程图如下图: 图2 主程序模块图 各功能模块的流程图: 简略的展示部分函数模块的流程图,我采用简洁的叙述算法的流程过程,实际的应用参照程序清单,以下为:银行家算法的流程图,安全性检查算法流程图,释放资源算法流程图等。 银行家算法的流程图: 图3 银行家算法 安全性检查算法流程图 图4 安全检查算法 释放资源算法流程图 图5释放资源算法 实验运行结果 实验结果达到了实验要求和预期的结果,实验运行结果截图如下: 图7 初始化资源信息 图7为刚开始执行程序时进程数和资源种类确定,以及系统可利用资源的初始化。 图8 系统给进程随机分配资源 图8系统给进程0、1随机分配资源,显示所需的资源数。 图9 随机分配资源后进程信息 图9为进程随机分配资源后信息的显示包括:进程状态,还需资源,已分配资源,最大资源,可利用资源。 图10 安全检查 图10为安全信息检查,输出安全序列号。 图11 进程再申请资源 图11为给进程0再次分配资源,当满足所需资源时,进程执行完,释放系统所占的资源。 图12 分配资源超过可利用资源 图12 分配资源超过可利用资源,系统处于不安全状态,本次申请作废,恢复原来的资源分配状态。 总 结 遇到的问题 由于使用进程编程较少,所以也遇到了一些问题,无论是哪种算法或问题首先要有自己的思路,接下来就是通过语言的实现。遇到的最大的问题就是不了解银行家算法和安全性算法,所以刚开始无从下手,还有问题就是编译调试中的问题。 解决方法 我通过网上和图书馆查阅相关的资料,对这两种算法有了初步的了解,然后提出自己的设计思路,确定采用单链表的数据结构实现,对于一些自己模糊和不清楚自己又解决不了的问题那就问老师和同学。 收获体会 通过这次实验,让我更加全面的复习C语言,也让我加深了操作系统的知识,知道了系统给进程分配资源时解决死锁的方法,对安全算法和银行家算法有了一定的了解。以前的自己C语言的编程还是有些基础,也做了大量的编程题,所以,编程不是主要的问题。主要的问题就是对于操作系统系统分配资源的不熟悉,以及试验中所遇到的算法的了解不够,致使在编程中出现了一些错误,之后,通过借阅图书馆的书籍,查阅相关的资料,弄懂了算法的含义,解决了相关的问题,让

文档评论(0)

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

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

1亿VIP精品文档

相关文档