银行家算法操作系统课程设计报告.docVIP

  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文档。上传文档
查看更多
成绩 课程设计报告 题 目 银行家算法程序设计 课 程 名 称 操作系统课程设计 院 部 名 称 信息技术学院 专 业 计算机科学与技术 班 级 09计算机科学与技术(单) 学 生 姓 名 瞿丹蕾 学 号 0905205007 课程设计地点 A206 课程设计学时 20 指 导 教 师 何 健 金陵科技学院教务处制 课程设计的目的和要求 银行家算法是避免死锁的一种重要方法,本设计要求用C语言编写和调试一个简单的银行家算法程序。加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。通过对这个算法的设计,让学生能够对书本知识有更深地理解,在操作和其他方面有更高的提升,同时对程序设计的水平也有所提高。 二、课程设计环境要求 1、硬件环境 处理器Intel(R) Pentium(R) Dual;CPU: E2180 @ 2.00 GHz; 2.00 GHz,0.99 GB的内存。 2、软件环境 Microsoft Windows XP操作系统;装有Turbo C 2.0及VS2008软件。 三、设计任务介绍及系统需求分析 1、设计任务介绍 设计一个n个并发进程共享m个系统资源的程序实现银行家算法。要求包含: 简单的选择界面。 前系统资源的占用和剩余情况。 为进程分配资源,如果进程要求的资源大于系统剩余的资源,不与分配并且提示分配不成功。 撤销作业,释放资源。 2、系统需求分析 当系统在进行资源管理时,如果对进程资源分配不当,可能会使系统进入死锁状态,因而后面到来的进程也无法顺利执行。银行家算法中,要对当前申请资源的进程申请资源的数目进行判断,如果可以试分配,则试求出一个安全序列,如果可以求出,则说明这个进程分配资源后系统不会进入不安全状态,将该进程申请的资源分配给他,若求不出安全序列,则说明将资源分配给该进程生系统会进入不安全状态,所以就使该进程进入阻塞状态,等待以后可以分配资源时再执行该进程,然后系统继续服务其它进程。通过这样一个过程,可以有效避免系统进入死锁状态。 四、概要设计 避免死锁将系统状态分为安全状态和不安全状态两种。所谓安全状态指的是系统按照某进程顺序(1,2,3,......n)(称1,2,3,......n序列为安全序列),来为每个进程i分配其所需资源,直至满足每个进程对资源的最大需求,使每个简称都可以顺利完成。如果系统无法找到一个这样的安全序列,则称系统处于不安全状态。避免死锁就是通过一套完整的机制,让系统时时刻刻都处于安全状态。 (1)t0时刻系统通过算法检测当前系统是否安全,即是否可以找到一个安全序列使当前所有进程顺利完成,若找到则称系统安全,并按照序列继续进程的执行,并执行步骤(2);若找不到则称系统不安全即系统已进入死锁状态,立刻停止进程的执行,通过挂起一些进程来让系统进入安全状态,当系统处于安全状态后转向执行步骤(2)。 (2)当t1时刻有进程对系统提出自愿请求时,系统先检测当前进程资源请求是否大于此进程最大需求,若大于则不执行;若不大于,再检测当前的资源要求是否大于系统当前可分配数,若大于则不予分配,若不大于则进行步骤(3)。 (3)系统假设将进程i要求的资源分配给i,通过安全性算法检测将资源分配给进程后系统是否还处于安全状态,若处于则分配资源,若不处于则不予分配。 银行家算法程序总体结构图: mainprintcheck main print check 五、详细设计 一.功能模块设计 check()函数是用来检测已知进程的状态是否安全;print()函数是用来输入系统可用资源数。主函数主要实现了对整个程序的运行控制和对相关功能模块的调用。 总任务流程图如下: 资源请求request[i] rquest [ 资源请求request[i] rquest [ j ]是否大于need[i][j] 是 请求资源超过最大资源 否 request[j]是否小于need[i][j]并且request[j]是否大于available[j] 没有足够的可用资源 是 试探将资源分配给i,并修改相应数据结构 进行安全性检测 能否找到安全序列? 正式分配资源 否 是 否 Check()函数流程图如下: 把 把available[j]赋值给work[j] k=n fi

文档评论(0)

li455504605 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档