欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    分布式系统中的死锁.ppt

    • 资源ID:6094353       资源大小:277.49KB        全文页数:29页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    分布式系统中的死锁.ppt

    第六章 分布式系统中的死锁 6.1 死锁问题,死锁发生的条件,(1)互斥。正如我们第五章所讨论的,互斥是一种资源分配方式,保证同一个资源在同一时刻最多只能被一个进程占用,它用于防止多个进程同时共享访问不可同时共享访问的资源。(2)不可剥夺的资源分配。系统将一个资源的访问权分配给某一个进程后,系统不能强迫该进程放弃对该资源的控制权。(3)占有并等待。必然有一个进程占用了至少一个资源,同时在等待获取被其他进程占用的资源。(4)循环等待。在等待图中有一个循环路径。,第六章 分布式系统中的死锁 6.1 死锁问题,死锁的图论模型,可以用图模型来表示死锁,表示死锁的图模型有两种,一种是等待图,另一种是资源分配图。,在等待图中,节点代表进程,当且仅当进程Pi等待一个被进程Pj所占用的资源时,边(Pi,Pj)存在于等待图中,图中的边是有向的。资源分配图中的节点有两种:一种是进程节点,另一种是资源节点。每个边是一个有序对(Pi,Rj)或(Rj,Pi),其中P代表进程,R代表一个资源类型。边(Pi,Rj)表示进程Pi请求类型为Rj的一个资源,并且正在等待这个资源,一个资源类型中可能有多个资源。边(Rj,Pi)表示类型为Rj的一个资源已经分配给进程Pi。由于等待图假定一个资源类型中只有一个资源,所以资源分配图是一个比等待图更加有力的工具。,第六章 分布式系统中的死锁 6.1 死锁问题,死锁的图论模型,资源分配图实例:,第六章 分布式系统中的死锁 6.1 死锁问题,死锁的图论模型,资源分配图到等待图的转化:(1)在资源分配图中找到一个未被处理的资源R。如果所有的资源都已经处理,转向步骤3。(2)从这个资源R的每个输入进程节点到每个输出进程节点之间加一条有向边。一个资源的输入进程节点是等待这个资源的进程节点,一个资源的输出进程节点是占有这个资源的进程节点。转向步骤1。(3)删除所有的资源节点以及相应的边。,第六章 分布式系统中的死锁 6.1 死锁问题,死锁的图论模型,资源分配图到等待图的转化实例:,第六章 分布式系统中的死锁 6.1 死锁问题,处理死锁的策略死锁,可以使用PAID来概括死锁处理的各种方法:预防(Prevent)、避免(Avoid)、忽略(Ignore)和检测(Detect)。预防死锁。通过限制请求,保证四个死锁条件中至少有一个不能发生,从而预防死锁。避免死锁。如果资源分配会导致一个安全的结果状态,就将资源动态地分配给进程。如果至少有一个执行序列使所有的进程都能完成运行,那么这个状态就是安全的。忽略死锁。忽略死锁是UNIX常采用的一种方法,这种方法只是简单地忽略死锁问题。检测死锁和从死锁中恢复。允许死锁发生,然后发现并解除死锁。,第六章 分布式系统中的死锁 6.1 死锁问题,死锁的AND条件和OR条件,资源死锁和通信死锁:在通信死锁中,进程等待的资源就是报文。资源死锁和通信死锁的真正区别在于资源死锁通常使用AND条件,而通信死锁通常使用OR条件。所谓AND条件就是当进程取得所有所需资源时,它才能继续执行;所谓OR条件就是当进程得到至少一个所需资源,它就能继续执行。在使用AND条件的系统中,死锁条件是在等待图中存在回路。但是在使用OR条件的系统中,等待图中的回路未必会引发死锁。在使用OR条件的系统中,死锁条件是存在结(knot)。一个结K是一个节点集合,对于K中的任何节点a,a能到达K中的所有节点,并且只能到达K中的节点。,第六章 分布式系统中的死锁 6.1 死锁问题,死锁的AND条件和OR条件,OR条件死锁图例:,第六章 分布式系统中的死锁 6.2 死锁的预防,预防死锁的一般方法,死锁预防算法是通过限制进程的资源请求来达到预防死锁的目的,都是通过打破四个死锁条件中的一个条件来实现的。,进程在开始执行之前同时获得所有所需资源。这种方法打破了占有并等待的条件。所有的资源都要被赋予一个唯一的数字编号。一个进程可以请求一个有唯一编号i的资源,条件是该进程没有占用编号小于或等于i的资源。这样,就打破了循环等待的条件。每个进程被赋予一个唯一的优先级标识。优先级标识决定了进程Pi是否应该等待进程Pj,从而打破了不可剥夺的条件。,第六章 分布式系统中的死锁 6.2 死锁的预防,基于时间戳的预防死锁方法,包括两种死锁预防方案。这两种方案相互补充,这种方法常用于分布式数据库系统中。,等待死亡方案(wait-die scheme)。该方案是基于非剥夺方法。当进程Pi请求的资源正被进程Pj占有时,只有当Pi的时间戳比进程Pj的时间戳小时,即Pi比Pj老时,Pi才能等待。否则Pi被卷回(roll-back),即死亡。伤害等待方案(wound-wait scheme)。它是一种基于剥夺的方法。当进程Pi请求的资源正被进程Pj占有时,只有当进程Pi的时间戳比进程Pj的时间戳大时,即Pi比Pj年轻时,Pi才能等待。否则Pj被卷回(roll-back),即死亡。,第六章 分布式系统中的死锁 6.2 死锁的预防,基于时间戳的预防死锁方法,图例说明:,第六章 分布式系统中的死锁 6.3 死锁的检测,集中式死锁检测,在集中式死锁检测方法中,利用所有的局部资源分配图(或等待图)建立一个全局资源分配图(或等待图)。任何一个机器为它自己的进程和资源维持一个局部的资源分配图。整个系统只有一个协调者,它维持全局的资源分配图,全局的资源分配图是由局部资源分配图组合而成的。,第六章 分布式系统中的死锁 6.3 死锁的检测,集中式死锁检测,全局资源分配图(或等待图)的获得方法:当在局部图中有边被加入或删除时,向协调者发送一个报文,协调者根据报文信息对全局图进行更新。定期地更新,每个机器定期地向协调者发送自上次更新以来所有添加的边和删除的边,协调者根据报文信息对全局图进行更新。当协调者认为需要运行回路检测算法时,它要求所有的机器向它发送局部图的更新信息,协调者对全局图进行更新。当开始死锁检测时,协调者便查找全局等待图。如果发现回路,一个进程就会被卷回,从而打破循环等待。缺点:容易产生假死锁的情况。,第六章 分布式系统中的死锁 6.3 死锁的检测,集中式死锁检测,产生假死锁的图例说明:,第六章 分布式系统中的死锁 6.3 死锁的检测,集中式死锁检测,产生假死锁的图例说明:,第六章 分布式系统中的死锁 6.3 死锁的检测,分布式死锁检测,Knapp将分布式死锁检测算法分为以下四类:路径推动算法(path-pushing algorithm)。先在每个机器上建立形式简单的全局等待图。每当进行死锁检测时,各个机器就将等待图的拷贝送往一定数量的邻居节点。局部拷贝更新后又被传播下去。这一过程重复进行直到某个节点获得了足够的信息来构造一个等待图以便做出是否存在死锁的结论。边跟踪算法(edge-chasing algorithm)。分布式网络结构图中的回路可以通过沿图的边传播一种叫探测器的特殊信息来检测。当一个发起者得到一个与自己发送的探测器相匹配的探测器时,它就知道它在图中的一个回路里。,第六章 分布式系统中的死锁 6.3 死锁的检测,分布式死锁检测,Knapp将分布式死锁检测算法分为以下四类:扩散计算(diffusing putation)。怀疑有死锁发生时,事务管理器通过向依赖于它的进程发送查询启动一个扩散进程。这里不会生成全局等待图。发送查询信息时,扩散计算就增长;接收回答后,扩散计算就缩减。根据所得信息,发起者会检测到死锁的发生。全局状态检测(global state detection)。这个方法基于Chandy和Lamport 的快照方法。可以通过建立一个一致的全局状态而无需暂停当前的计算来生成一个一致的全局等待图。,第六章 分布式系统中的死锁 6.3 死锁的检测,层级式死锁检测,在层级式死锁检测算法中,站点被分层地放在一个树中。一个站点的死锁检测只涉及到它的下一级站点。例如,设A、B和C是控制器,而C是A和B的最低的公共祖先。假定节点Pi出现在控制器A和B的局部等待图中,那么节点Pi也必定出现在如下控制器的等待图中:(1)C控制器;(2)所有位于从C到A的路径上的控制器;(3)所有位于从C到B的路径上的控制器。而且,如果Pi和Pj出现在控制器D的等待图中,并且在D的一个下一级控制器(子控制器)的等待图中有一条从Pi到Pj的路径,那么边(Pi,Pj)一定存在于D的等待图中。,第六章 分布式系统中的死锁 6.3 死锁的检测,关于死锁检测和恢复的研究方向:,算法正确性。严格证明死锁检测算法的正确性是困难的,由于报文的传输延迟是不可预料的,所以得到一致的全局状态是很困难的。算法性能。需要在信息流量(监测和恢复算法的复杂性)和死锁持续时间(监测和恢复的速度)之间达成妥协。死锁解决。一个好而快的死锁检测算法可能并不能提供足够的信息用于解决死锁。假死锁。一个检测程序不仅要满足前进要求,即必须在有限的时间内发现死锁,还要满足安全要求。如果一个死锁被发现,那么这个死锁应该是确实存在的。死锁概率。检测和恢复算法的设计依赖于给定系统中死锁发生的概率。,第六章 分布式系统中的死锁 6.3 死锁的检测,死锁检测的实例,AND模型下的Chandy-Misra-Hass算法,在Chandy-Misra-Hass算法中,分布式死锁检测算法使用一个特殊的报文,在等待图中该报文从一个进程传递到另一个进程,该报文称为探测报文(probe message)。如果报文回到发起者,那么就有死锁存在。探测报文包含一个三元组(i,j,k),表示该报文是一个由进程Pi发起的死锁检测报文,现在由进程Pj所在的站点发往进程Pk所在的站点。当一个进程接收到一个探测报文时,它首先检查自己是否等待某个(或某些)进程,如果它正在等待某个(或某些)进程,它将向所有它等待的进程转发这个探测报文。,第六章 分布式系统中的死锁 6.3 死锁的检测,死锁检测的实例,AND模型下的Chandy-Misra-Hass算法图例说明:,第六章 分布式系统中的死锁 6.3 死锁的检测,死锁检测的实例,AND模型下的Chandy-Misra-Hass算法中打破死锁方法:,一种方法是由探测报文的发起者杀死自己,但是,当有多个进程同时检测到同一个死锁时,与同一个死锁有关的多个进程会被杀死,这样做的效率会很低。另一种方法是每个收到探测报文的进程将自己的标识符附加到探测报文的后面,当探测报文回到发起者进程时,发起者进程选取一个具有最大标识符号码的进程杀死,即使有多个进程同时检测到同一个死锁,它们也会选择杀死同一个进程。,第六章 分布式系统中的死锁 6.3 死锁的检测,死锁检测的实例,AND模型下的Mitchell-Merritt算法,Mitchell-Merritt算法与Chandy-Misra-Hass算法的区别:其限制是每个进程每次只能请求一个资源。探测报文在等待图中,沿等待方向的相反方向传送,这样的图叫反向等待图(reversed wait-for graph)。每当进程收到探测报文时,它将自己的标识符和探测报文发起者的标识符相比较,如果自己的标识符大于探测报文发起者的标识符,它就用自己的标识符取代探测报文发起者的标识符,自己变成探测报文的发起者。当几个进程同时发起死锁检测时,只有一个进程能够成为唯一的探测者。,第六章 分布式系统中的死锁 6.3 死锁的检测,死锁检测的实例,AND模型下的Mitchell-Merritt算法,Mitchell-Merritt算法图例说明:,第六章 分布式系统中的死锁 6.3 死锁的检测,死锁检测的实例,AND模型下的Mitchell-Merritt算法,为什么每个进程每次只能请求一个资源?在每个进程每次只能请求一个资源的情况下,等待图中的一个循环中的每个节点都等待环内的节点,所以只有进入环内的边。其反向等待图中则没有进入环内的边,就不会有大标识符的进程产生的探测报文进入回路,而不能检测出死锁。,第六章 分布式系统中的死锁 6.3 死锁的检测,死锁检测的实例,OR模型下的Chandy-Misra-Hass算法,使用两类报文:(query,i,j,k)和(reply,i,j,k),表示这些报文属于由进程Pi发起的并由Pj送往Pk的扩散计算。一个进程的依赖集合包括所有它在等待以便获得报文的进程。如果接收进程Pk是活动的,它会忽略所有的查询和回答报文。如果它被阻塞,它会向它的依赖集合中的进程发送查询。一旦收集到回答报文,接收进程将向发起者发送一个回答报文。发起者以及每个中间进程用一个计数器记录查询和回答的数目。如果这两个数字相同,即发起者的每个查询都得到了回答,就表明发起者处于死锁状态。,第六章 分布式系统中的死锁 6.3 死锁的检测,死锁检测的实例,OR模型下的Chandy-Misra-Hass算法,当接收进程Pk处于阻塞状态时,会有几种可能:如果这是Pi发起的第一个来自Pj的报文(这个报文的发送者Pj叫做Pk关于Pi的结合者),它将向它的依赖集合中的所有进程发送这个查询,并且将查询数目存储在一个局部变量num(i)中。令局部变量wait(i)表示这一进程从它接收到它的第一个由Pi发起的查询起一直被阻塞这一事实。如果这个查询是Pi发起的但不是第一个来自Pj的报文,即当wait(i)仍然成立时,Pk将马上回答。如果从wait(i)变为假的那一时刻Pk运行过,那么这个查询就被丢弃。,第六章 分布式系统中的死锁 6.3 死锁的检测,死锁检测的实例,OR模型下的Chandy-Misra-Hass算法图例说明:,第六章 分布式系统中的死锁 6.3 死锁的检测,

    注意事项

    本文(分布式系统中的死锁.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开