生产围棋的工人不小心把相等数量的黑子和白子混在一块,.ppt

生产围棋的工人不小心把相等数量的黑子和白子混在一块,.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
生产围棋的工人不小心把相等数量的黑子和白子混在一块,

生产围棋的工人不小心把相等数量的黑子和白子混在一块,该系统由两个并发执行的进程组成,系统功能如下: (1)进程A专门拣黑子,进程B专门拣白子; (2)每个进程每次只拣一个子,当一个进程在拣子时不允许另一个进程去拣子 (3)当一个进程拣一个子后,必让另一个进程拣一个子 试用同步原语管理进程,使其能正确实现上述功能。(假定系统启动时先让进程A拣子) 第七章 死锁(Deadlock) 1、死锁问题的提出 2、死锁的必要条件 3、死锁的预防 4、死锁的避免和银行家算法 5、死锁的检测 6、死锁的恢复 7.1 死锁问题的提出 死锁是指计算机系统和进程所处的一种状态。 常定义为:在系统中的一组进程,由于竞争 系统资源或由于彼此通信而永远阻塞,我们 称这些进程处于死锁状态。 7.2 死锁的必要条件 资源的分类 死锁的必要条件 一、资源的分类 可抢占资源、不可抢占资源 共享资源、独享资源 可再次使用的永久资源、消耗性的临时资源 二、死锁的必要条件 互斥条件:一个资源每次只能给一个进程使用 不可抢占条件:资源申请者不能强行从资源占有者手中 夺取资源,资源只能由占有者自愿释放 部分分配条件:一个进程在申请新资源的同时保持对原 有资源的占有 循环等待条件:存在一个进程等待队列 {P1 , P2 , … , Pn}, 其中P1等待P2占有的资源,P2等待P3占有 的资源,…,Pn等待P1占有的资源,形成 一个进程等待环路 7.3 死锁的预防 在系统设计时确定资源分配算法,保证不发生死锁。具体的做法是破坏产生死锁的四个必要条件之一 预防死锁是一种较可取 的方法,但资源的利用率较低。 1、破坏互斥条件 互斥是正确使用非共享资源的唯一手段。 故不能通过取消互斥来预防死锁。 2、破坏不可抢占条件 适用于状态容易保护,稍后又容易恢复的 资源。如CPU,内存。 3、破坏部分分配条件 采用预先静态分配法:每个进程执行前,一次分配其所有资源 允许进程仅当自己未占有资源时才申请资源。 4、破坏循环等待条件 有序资源分配 为使“循环等待”条件不满足,我们把所有 资源按类型进行排队,并赋予不同的编号。 申请 按序号递增次序进行 7.4 死锁的避免和银行家算法 死锁避免 安全状态和不安全状态 银行家算法数据结构 银行家算法 例 单资源的银行家算法 假定某银行家有一笔资金可供一批顾客借用, 并假定: 每个顾客预知他的最大借款总额,且不超过银行家拥有的可用资金总和。 每次借款以一万元为单位。 每当顾客提出借口请求,银行家可立即给予,或让顾客等一段时间。 只有当顾客达到他的预定最大借款额时,他才在有限时间依次归还。 二、安全状态和不安全状态 安全状态:指系统能按某种进程顺序如 P1,P2···PN 为每个进程分配资源直至最大需求。 不安全状态:在系统中不存在这样的序列。 三、银行家算法数据结构 Available:一个长度为m的向量,表示每类资源的可用数目。 如果Available[j]=k,表明Rj类资源有k个。 Max:一个m×n矩阵,定义每个进程的最大资源需求数,如果Max[i,j]=k,表示进程i需要Rj类资源有k个。 Allocation:一个m×n矩阵,定义当前分配给每个进程每类资源的数目。如果Allocation [i,j]=k,则表示进程I获得:Rj类资源有k个 Need:一个m×n矩阵,表示每个进程还需多少资源。 如果 Need[i,j]=k,表示进程I还需要Rj类资源有k个。表示进程I需要Rj类资源有k个 四、银行家算法 设:Requesti是进程Pi的请求向量 当Pi发出资源请求后,系统按如下步骤进行检查: 1、如果Requesti ?Needi 则go to 2,否则认为出错。 2、如果Requesti ? Available 则go to 3,否则表示无足够资源, Pi等待。 3、系统进行试探分配,并求该相应数据结构数据 Available:= Available- Requesti Allocationi:= Allocationi+ Requesti Needi:= Needi-Requesti 4、系统执行安全性算法:安全,把资源分配给Pi,否则, Pi等待。 安全性算法 1、设Work 和 Finish是长度分别为m,n的向量 初始值Work:=Available ,Finishi:= False(所有) 2、 从进程集合中找到一个能满足下列条件的进程

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档