银行家算法流程图+C++源代码+实验报告-课程设计.docVIP

银行家算法流程图+C++源代码+实验报告-课程设计.doc

  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文档。上传文档
查看更多
银行家算法流程图C源代码实验报告-课程设计

银行家算法流程图+C++源代码+实验报告-课程设计 银行家算法流程图+C++源代码+实验报告 摘要:银行家算法是避免死锁的一种重要方法。 操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。 银行家算法确实能保证系统时时刻刻都处于安全状态,但它要不断检测每个进程对各类资源的占用和申请情况,需花费较多的时间。 现在的大部分系统都没有采用这个算法,也没有任何关于死锁的检查。? 关键字:银行家算法 ,? 系统安全 ,? 死琐 1,银行家算法原理 银行家算法是从当前状态出发,逐个按安全序列检查各客户中谁能完成其工作,然后假定其完成工作且归还全部贷款,再进而检查下一个能完成工作的客户。如果所有客户都能完成工作,则找到一个安全序列,银行家才是安全的。 缺点:该算法要求客户数保持固定不变,这在多道程序系统中是难以做到的;该算法保证所有客户在有限的时间内得到满足,但实时客户要求快速响应,所以要考虑这个因素;由于要寻找一个安全序列,实际上增加了系统的开销. Banker algorithm 最重要的一点是:保证操作系统的安全状态!这也是操作系统判断是否分配给一个进程资源的标准!那什么是安全状态?举个小例子,进程 P 需要申请 8 个资源(假设都是一样的),已经申请了 5 个资源,还差 3 个资源。若这个时候操作系统还剩下 2 个资源。很显然,这个时候操作系统无论如何都不能再分配资源给进程 P 了,因为即使全部给了他也不够,还很可能会造成死锁。若这个时候操作系统还有 3 个资源,无论 P 这一次申请几个资源,操作系统都可以满足他,因为操作系统可以保证 P 不死锁,只要他不把剩余的资源分配给别人,进程 P 就一定能顺利完成任务。 2,程序结构 当进程pi提出资源申请时,系统执行下列 步骤: (1)若Request[i]≤Need[i],转(2);否则错误返回 (2)若Request[i]≤Available,转(3);否则进程等待 (3)假设系统分配了资源,则有: Available:=Available-Request[i]; Allocation[i]:=Allocation[i]+Request[i]; Need[i]:=Need[i]-Request[i] 若系统新状态是安全的,则分配完成若系统新状态是不安全的,则恢复原状态,进程等待 模拟实现Dijkstra的银行家算法以避免死锁的出现.分两部分组成: 第一部分:银行家算法(扫描) 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 4.? 若所有进程的Finish[i]=true,则表示系统安全;否则,不安全! 3、银行家算法流程图 初始化算法流程图:?????????????? 银行家算法流程图: 安全性算法流程图: 4、银行家算法设计思路 在操作系统的设计中,我们往往无法回避一个问题,那就是进程对有限资源的占用问题。在计算机系统中有很多独占性的资源,在任一时刻,它们都只能被一个进程使用。常见的有打印机、磁带驱动器等。例如:两个进程同时打印会引起打印混乱。鉴于此,操作系统全都具有授权一进程(临时)独占地访问某一种资源的能力。 在很多情形中,需要一个进程独占地访问若干种资源而不是一种。例如将一个大文件由磁带拷贝至打印机,进程需要同时访问磁带驱动器和打印机,并且不允许其他进程这时访问它们。在只有一个进程的系统中,该进程可以要求任何它所需要的资源,然后进行工作。但是,在一个多道程序系统中,就有可能出现严重的问题。例如,两个进程分别准备打印一个非常大的磁带文件。进程A申请打印机,并得到授权。进程B申请磁带机,也得到授

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档