操作系统课程设计——银行家算法.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文档。上传文档
查看更多
操作系统课程设计——银行家算法

目录 第一章 设计目的 0 第二章 设计要求 1 2.1 问题描述 1 2.2 基本要求 2 第三章 设计思想、环境说明和使用工具 2 3.1 设计思想 2 3.2 环境说明 3 第四章 主要内容 3 4.1 实现银行家算法的主要数据结构 3 4.2 算法 4 4.2.1算法背景 4 4.2.2算法实质 4 4.2.3前提条件 4 4.2.4数据间的关系 4 4.3安全性检测算法 4 4.4银行家算法描述 5 第五章 算法流程图 5 5.2对首次调用的安全检测算法流程图 6 5.3输入算法流程图 7 第六章 写出程序调试及运行情况 8 6.1程序调试 8 6.2运行情况 9 第七章 15 系统设计中出现的问题及解决的方法 15 7.1定义问题 15 7.2数组问题 15 7.3程序结构及思路问题 15 7.3.1程序结构问题 15 7.3.2设计思路 16 第八章 课程设计的体会 17 第九章 自我评价与总结 18 第十章 程序清单 19 (见附录) 19 参考文献 19 附录 20 第一章 设计目的 通过银行家算法设计与实现,可以加深学生对死锁的理解,掌握死锁的预防、避免、检测和解除的基本原理,重点掌握死锁的避免方法—银行家算法。使学生初步具有研究、设计、编制和调试操作系统模块的能力。 第二章 设计要求 2.1 问题描述 系统在进行资源分配的过程中,允许进程动态的申请资源,为了避免发生死锁,在分配资源前要进行安全性检查,若此次分配不会导致系统进入不安全状态,便将资源分配给进程,否则,进程等待。 2.2 基本要求 设计一个进程动态请求资源的模拟系统,实现随机产生进程请求资源的数量;资源安全性检查算法;资源的分配算法;以及输出显示每次请求的结果和系统资源的状态。 第三章 设计思想、环境说明和使用工具 3.1 设计思想 输入当前进程资源的使用情况以及整个系统的资源使用情况,并进行初始化安全性检查;如果是不安全状态,重新初始化系统;否则,从等待队列中提取一个等待进程,使用银行家算法进行检测,输出当前系统的状态和安全序列;如果是安全状态,系统继续从等待队列中提取等待进程进行检查;如果是不安全状态,进程回到等待队列,系统从等待队列中提取等待进程进行检查。系统中申请资源的进程全部进入等待队列等候处理。 3.2 环境说明 工具:C语言。 在WINDOWS环境下使用VC++6.0进行开发。 第四章 主要内容 4.1 实现银行家算法的主要数据结构 #includestdio.h #includestdlib.h #includetime.h #includewindows.h #define q 10 { int x; int i,j,k,n; int max[q][q],allocation[q][q],need[q][q]; int available[q]; char name[q],h; } 4.2 算法 4.2.1算法背景 创始人Dijkstra,该算法因研究用于银行系统现金贷款的发放而得名。 4.2.2算法实质 要设法保证系统动态分配资源后仍然保持安全状态,从而避免死锁的发生。 4.2.3前提条件 要求进程预先告知自己的最大资源需求,并且假设系统拥有固定的资源总量。 4.2.4数据间的关系 1.need=max-allocation 表示最大需求资源要么已被分配、要么等待分配。 2.request≤nead 表示某进程申请的各类资源数不能超过自己的需求资源总数。 3.request≤available 表示某进程申请各类资源数不能超过目前资源可用数。 4.3安全性检测算法 步骤1:将need、allocation和available存入临时变量空间//检测时要修改这些参数 步骤2:查找need矩阵是否有一行,其未被满足的资源数均小于或等于可用资源向量available。如果找不到,返回不安全状态; 步骤3:若找到这样一行,可以假设它获得所需的资源并运行结束,将该进程标记为结束,并将已分配资源(allocation)加到可用资源向量available上; 步骤4:重复以上两步,直到所有进程都标记为结束,则状态是安全的,否则将发生死锁。 4.4银行家算法描述 步骤1:判断申请量(request)是否超过最大需求量(need),若超过,返回不安全状态。 步骤2:判断申请量(request)是否超过目前系统拥有的可分配量(available),若小于,挂起进程等待; 步骤3:根据进程的资源请求,先把资源试探性分配给它。修改相应的数据,available,allocation和need。 步骤4:执行安全性检测算法判断步骤(3)的是否安全,如果处在安全状态则承认试分配,否则抛弃试分配,进程等待

文档评论(0)

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

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

1亿VIP精品文档

相关文档