第八章 死锁处理.ppt

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

第八章 死锁处理 主讲:陈笑蓉 贵州大学计算机科学与技术学院 在多道程序系统中,多个进程并发运行,共享资源,从而提高了资源的利用率。 但是若对资源的管理和使用不当,在一定条件下会导致系统发生一种随机性故障——死锁。 这时,若无外力协助,每个进程都不能继续执行下去。 主要内容 死锁的形成 资源分配图 死锁的排除方法 死锁的检测与解除 8.1 死锁的形成 死锁——两个或两个以上进程都无限止等待永久不会出现的事件而发生的一种状态。 陷入死锁状态的进程称为死锁进程,这样需要与它们进行某种合作的其它进程就会相继陷入死锁,最终可能导致整个系统处于瘫痪状态。 死锁涉及到两个或两个以上进程由于竞争资源引起的冲突。例如: 例1:再次考虑5个哲学家就餐问题 五个哲学家在一起思考和用餐。这些哲学家共用一张圆桌,周围放有五把椅子,每人座一张,在圆桌上有五个碗和五支筷子。当一个哲学家思考问题时,他不与同事交谈,饥饿时,便去试图取用其左右最靠近他的两支筷子,但他可能一支都拿不到,只有当他拿到两支筷子时才能用餐,用餐完毕,又将筷子放回原处,又继续思考。如何使这五个哲学家保持同步:既能进行思考又不至于饿死。 资源分类: 按资源的占有方式 可剥夺资源——可剥夺资源是指资源占有者进程虽然仍然需要使用该资源,但另一进程却可以强行把资源从占有者进程处抢来,归自己使用。 不可剥夺资源——不可剥夺资源是指只有在占有者进程不再需要使用该资源而主动释放资源外,其它进程不得在占有进程使用资源过程中抢占。 一个资源是可剥夺资源还是不可剥夺资源,完全取决于资源的性质。 死锁与不可剥夺资源有关,竞争不可剥夺资源有可能会导致死锁。 按使用期限: 永久资源——所有的硬件资源和可再入的纯代码过程,都属于可再次使用的永久资源,它们可被进程反复使用。 消耗性的临时资源——而在进程同步和通信情况中出现的消息、信号和数据也可看作资源,它们是属于消耗性的临时资源。 消耗性的临时资源同样也可能引起死锁。什么时候会发生死锁呢? 死锁的必要条件  8.2 资源分配图RAG 资源分配图 Holt(1972年)提出用资源分配图(Resources Allocation Graph)来建立产生死锁的4个必要条件的模型。 资源分配图RAG可以定义为一个二元组,即RAG=(V,E),其中V是顶点集,E是边集。 V又包含两个子集合,V=(P,R),子集P={p1,p2,…pm}是进程集合,每个元素pi表示一个进程,在图中用圆圈表示;子集R={r1,r2,…rk}是资源集合,每个元素ri表示一类资源,在图中用方框表示,某类资源可能有多个分配单元,用方框中的小圆点表示。 边集中的边是有向边,可以是pi,rj或rj,pi,pi?P,rj?R。 若pi,rj?E,则表示在图中存在一条从节点pi指向节点rj的有向边,称作请求边,表示进程pi请求分配资源rj或rj中的一个单位; 若rj,pi?E,则在图中存在一条从节点rj指向节点pi的有向边,称作分配边,表示资源rj或rj中的一个单元已分配给了进程pi。 例如: 集合P、R和E: P={ p1,p2,p3}; R={r1,r2,r3,r4},其中r1有1个分配单元,r2有2个分配单元,r3有1个分配单元,r4有3个分配单元; E={p1,r1,p2,r3,r1,p2,r2,p2,r2,p1,r3,p3}; 如上图使用资源分配图可以看出: 如果资源分配图中无环路,则系统中没有死锁发生; 资源分配图中有环是死锁产生的必要条件,而不是充分条件。 利用资源分配图判定死锁的基本法则 : 若RAG中未出现任何环路,则S为非死锁状态,或称安全状态; 由若干单位资源构成的环路,是S为死锁状态的充分必要条件 ; 由若干不全为单位资源构成的环路,是S为死锁的必要条件但非充分条件 ; 资源分配图的化简: 对RAG图中不阻塞的非孤立进程结点,检查其申请的资源是否可以满足,若能满足,则删除其关联的所有分配边和申请边。 若能消去图中所有的边,使所有进程都能成为孤立结点,则称该图是可完全化简的;否则是不可完全化简的。 已经证明不同的化简顺序将会得到相同的化简图。 死锁定理:S是死锁的充分必要条件是S的状态资源分配图是不可完全化简的。 RAG例子: RAG化简算法: 把某时刻的可用资源向量V(t)赋予资源数据向量W; 把不占用资源的进程Li加入L; 在进程集合中找Rj=W的进程Pj ,作如下处理: 删掉进程Pj的所有分配边和请求边并令L=L+{Pj}; W=W+Aj(Aj是进程Pj的资源分配向量) 重复步骤3直到不能再处理。 若L 不等于P,则G不可完全化简,否则已完全化简。 解决死锁的基本

文档评论(0)

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

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

1亿VIP精品文档

相关文档