第六章死锁.ppt

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

SPOOLing系统死锁的例子 进程执行的顺序与死锁的关系 在进程P1和P2并发执行时,按照图中曲线①②③所示顺序推进时,两进程会顺利完成,我们称这种推进顺序是合法的。若按曲线④的顺序推进时,进入不安全区D内,两进程再推进会产生死锁。 6.3 资源分配图和死锁定理 在某一时刻系统中的进程、资源构成资源分配图,图中包括三个集合。 P 该时刻系统中所有进程{P1.. Pn} ; R 该时刻系统中所有资源{R1..Rm}; E 该时刻系统已分配的资源和进程正在申请的资源。 资源分配图和死锁定理 用方框表示进程,用圆表示某一类资源,圆内的点数代表该资源的个数。反之也可以。进程指向资源的有向边表示申请边,资源指向进程的有向边表示分配边。 资源分配图 资源分配图化简 资源图化简方法: 在图中找一个进程Pi,它只有分配边或虽有申请边,但可以立即转为分配边,擦去Pi的所有边(释放Pi占用的资源,因为进程的请求可以满足,进程能正常结束),对剩下的进程节点实施同样的操作,… 如能消去所有的边,则图是完全化简的,否则是不可完全化简的,其中必有环路。 资源分配图化简 利用分配图化简判定死锁的基本法则 (1)若图中没有环路,则图是安全状态 (2)若图中有环路,而环路中各个资源均为一个单位资源,则图是死锁状态(充分必要条件) (3)若图中有环路,但环路中各个资源不全为一个单位数,则不一定死锁。 (1)资源分配图中没有环路 (2)如果各类资源数为1,则系统出现死锁的充要条件是资源分配图含圈。 (3)资源分配图中有环路,环路中各个资源不全为一个单位数 (3)资源分配图中有环路,环路中各个资源不全为一个单位数 采用资源顺序分配法会破坏环路等待条件。 证明:假设采用升序分配资源的系统里仍然存在一组环路等待的进程,用{ P0,P1,… Pk }表示。 P0等待P1掌握的资源,P1等待P2掌握的资源,… Pk 等待P0掌握的资源。 根据升序分配法规则,P0的资源顺序号小于P1的资源顺序号,P1的资源顺序号小于P2的资源顺序号…; 用N(i)表示进程 i 掌握的资源序列号,根据升序分配规则存在以下不等式: N(0) N(1) N(2) … N(k) 由于假定存在环路,又有以下不等式: N(0) N(1) N(2) … N(k) N(0) 从而得到 N(0) N(0),这是一个自相矛盾的结论,因此系统中存在环路的假设不成立。 证明完毕。 死锁的避免 定义:系统运行过程中, 允许进程动态地申请资源,但系统在进行资源分配之前,要先计算资源分配后系统是否安全,若此次分配后,系统仍是安全状态(绝不会发生死锁的状态),则将资源分配给进程; 否则,令进程等待。 系统安全状态 系统安全状态定义:设系统中有n个进程,若存在一个序列〈 P1,P2,…,Pn〉,对于任何一个 Pi(i=1,2,…,n;i是进程结束的顺序号) 所需要的资源可以通过系统现有资源加上所有Pj(j<i)占有的资源来满足,则称系统处于安全状态,序列P1, P2,…,Pn 称为安全序列。安全状态不会发生死锁。若不存在这样一个安全序列,则称系统处于不安全状态。 单类资源的银行家算法 例:设银行家有10万贷款,客户P, Q, R分别需要8,3,9万元搞项目,现在P已得到了4万,Q正要申请2万, R正要申请4万。假定P, Q, R只要获得所需的全部贷款额度,就能完成项目并归还贷款。怎样分配银行才安全呢? 多类资源的银行家算法 银行家算法中的数据结构 (2)最大需求矩阵Max。它是n*m矩阵,行表示进程,列表示资源。MAX[ 2 , 3 ] 的值是1,表示进程2 对资源3的最大需求数是 1。 银行家算法中的数据结构 (3)分配矩阵Allocation 。它也是n*m矩阵,表示分配给每个进程的资源数。 银行家算法中的数据结构 (4)需求矩阵Need 。是n*m矩阵,表示每个进程还需要各类资源数。 银行家算法 银行家算法 检查系统是否安全 检查系统是否安全 (1) Work:=Available; Finish:=false; (2) 寻找满足条件的 i : a.Finish[i]=false; b.Need[i]≤Work; 如果不存在,则转(4) (3) Work:=Work+Allocation[i]; Finish[i]:=true; 转(2) (4) 若对所有i, Finish[i]=true,则系统处于安全状态,否则处于不安全状态 银行家算法举例 已分配 最大需求 剩余需求 请求 P1 1 2 4 2 5 8 1 3 4 1 2 1 P2 0 3 3 4 4 4 4

文档评论(0)

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

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

1亿VIP精品文档

相关文档