银行家算法资料.pptVIP

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1 2 3 目录 避免死锁 银行家算法 银行家算法之例 回顾 1. 死锁的概念。 2. 死锁的原因。 进程推进顺序非法 竞争资源 3. 死锁的必要条件。 (1)互斥条件 (2)请求与保持条件 (3)不剥夺条件 (4)循环等待条件 4. 预防死锁 破坏其中一个或几个条件。 预防死锁 1.破坏请求和保持条件 资源严重浪费 饥饿现象 2.破坏不可抢占条件 信息不连续 降低系统吞吐量 3.破坏循环等待条件 顺序固定 限制新型设备的增加 限制用户 避免死锁 在资源分配过程中采取限制措施 不破坏死锁的必要条件 限制条件较弱,可以获得较好的系统性能,但在实现上有一定的难度 系统状态 在避免死锁方法中,把系统状态分为安全状态和不安全状态。 所谓安全状态,是指系统能按某种进程推进顺序 (P1,P2,...,Pn) 为每个进程Pi分配其所需的资源,直至满足每个进程对资源的最大需求。反之,如果系统无法找到这样的一个安全序列,则称系统处于不安全状态。 当系统处于安全状态,可避免死锁。反之,当系统处于不安全状态时,则可能进入到死锁状态。 系统状态 12台磁带机 三个进程 P1、P2、P3 进程 P1 P2 P3 可用 当前需求 已分配 最大需求 10 4 5 2 3 2 9 5 7 2 假设当前时刻为To,如果系统将可用资源分配给P2,P2顺利完成任务,释放资源,系统的可用资源变为5,再将资源分配给P1,P1完成任务,释放资源,可用资源变为10,可以满足P3的需要.按照P2,P1,P3序列进行资源分配,P1,P2,P3都能顺利完成。 若To时刻,P3先申请一台磁带机,P2再申请,虽然P2完成了任务,释放了资源,但此时的可用资源不能够满足任何进程的需求,彼此都等待对方释放资源,导致死锁。所以,从系统分配1台磁带机给P3开始,系统就进入了不安全状态。 5 10 6 2 4 基本思想 使系统始终处于安全状态。 一个系统开始处于安全状态,当一个进程申请资源时,系统需要对该进程的请求进行计算,若将资源分配给该进程后,系统仍然处于安全状态,才将资源分配给该进程,否则,本次试探分配失败,令其等待。 银行家算法 银行家算法是避免死锁的经典算法。 一个银行家占有有限的资金,他不可能同时满足所有借贷者的需求。当银行家考虑究竟该借贷给谁的时候,更多的是考虑两个方面:第一、借贷者借到资金后是否能完成自己的工作并及时偿还;第二,贷款发放后是否会影响整个银行的运作,导致银行破产。这与操作系统中的资源分配非常相似。 数据结构 为实现银行家算法,系统中必须设置 若干数据结构。 (1)可利用资源向量Available. Avallable[j]=k,则表示系统中现有Rj资源K个。 (2)最大需求矩阵Max. Max[i,j]=K,表示进程i需要Rj类资源的数目为K。 (3)分配矩阵Allocation. Allocation [i,j]=K,表示进程i当前已获得Rj类资源的数目为K。 (4)需求矩阵Need. Need[i,j]=K,表示进程i还需要Rj类资源K个。 上述三个矩阵间存在下述关系: Need[i,j]=Max[i,j]-Allocation[i,j] 银行家算法 设Requesti 是进程Pi的请求向量。Requesti[j]=k,表示进程Pi需要K个Rj资源。 (1)如果requestiNeedi,进程Pi的本次请求超过了它宣布的最大值,系统拒绝分配,Return error. (2)如果requestiAvailable,表明系统当前可用资源不能满足Pi的资源请求,应推迟分配,将Pi阻塞等待。 (3)执行下列3个语句,试探性的将资源分配给Pi: Available = Available - requesti; Allocation =Allocation + requesti; Needi = Needi -requesti; 安全性算法 (4)调用安全性算法Safe(),测试系统是否安全。如果返回值为True,表示系统是安全的,则就此完成分配,返回给用户成功的信息;否则表示系统不安全,将第3步分配方案作废,恢复3个数据结构原值,让进程i等待。 银行家算法的关键环节是4步中调用Safe()判断当前状态是否安全。依据是,如果系统是安全的,那么,当前至少存在一个由所有进程组成的所谓“安全序列”。系统按照安全序列调度各进程,必然每完成一个进程后回收其所占用的资源,供后面的进程使用,最终使全部进程运行完成。 银行家算法 算法Safe()描述如如下函数,其中引入一个工作向量work,存放不断变化的可用资源。还引入了标志向量Finis

文档评论(0)

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

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

1亿VIP精品文档

相关文档