第4的章 互斥和选举算法.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4的章 互斥和选举算法

第4章 互斥和选举算法 互斥(Exclusion)问题 互斥保证了相互冲突的并发进程可以共享资源,即通过定义基本的操作来解决多个并发进程访问共享资源(进入临界区)时的冲突问题。 集中式系统实现互斥控制相对简单。Dekker和Dijkstra引入了信号量,通过P、V操作以软件方法实现互斥。硬件原子指令如:Test and Set、Compare and Swap和Fentch and Add也可以较好地实现互斥。 分布式互斥 分布式系统也可以简单地通过一个公共的协调者(管理信号量)来实现互斥(协调者接受带时戳的请求,发放许可),但是由于协调者是个瓶颈,它的性能和可靠性很难像集中式系统那样得到保障。 分布式互斥: 基于权标(Token):不同进程共享唯一(或k个)的权标,拥有权标的进程就可以访问临界区; 非基于权标:不同进程通过消息交换,协商出一个(或k个)可以访问临界区的进程。 互斥算法 互斥(及其算法)的主要目标是保证在一个时刻只能有一个(或不多于设定的k个)进程访问临界区。 一个正常的互斥算法必须满足: 不死锁:当临界区可用时,进程不应该无限等待而没有一个进程可以进入。 无饥饿现象:每个对临界区的请求最后都必须得到满足(不会被无限延迟)。 公平性:对临界区的请求必须基于一定的公平原则(如由逻辑时钟确定的请求时间)予以批准。 互斥算法 互斥算法的性能参数: 1) 每个请求的消息数。 2) 同步延迟 一个进程离开临界区到下一个进程进入该临界区之间的时间。 3) 反应时间 一个进程发出请求到该进程离开该临界区之间的时间。 衡量一个互斥算法的性能主要是前2个参数,第3个参数更多地取决于系统的负载和/或进程进入临界区的时间长短。 然而,互斥算法的性能与系统负载很多情况下是有很大关系的。 分布式互斥算法的假设 进程间通过消息传递进行通信。 网络在逻辑上是全连接的。 传输是可靠的。 通信是异步的。即:传输延迟不可预测,但是有限的。 消息是可以按照发送的顺序递交(FIFO)。 非基于权标的分布式互斥 所有进程相互通信来决定哪个进程可以访问临界区,决策是以分散的方式形成。 介绍: Lamport算法 Ricart和Agrawala算法(非权标) Maekawa算法 Lamport算法 通过带时戳的请求、应答和释放消息的交换来确定优先访问临界区的进程; 一个进程只有收到所有进程的应答(或释放)且没有收到更高优先级(时戳更小)的请求才能访问临界区; 进程离开临界区,需发送释放消息给所有的其它进程; 需要3(n-1)个消息来实现。 改进的Lamport算法 进程Pj在发出它自己的请求后收到一个来自进程Pi的请求,而它的请求的时戳大于Pi的请求; 此时,进程Pj没有必要发送进程Pi的应答,因为当进程Pi收到进程Pj的请求时,它发现Pj的请求的时戳大于自己的请求时戳,于是它就知道Pj没有任何时戳更小的未决请求; 改进的Lamport算法可以减少传递的消息数,但最坏的情况仍然需要3(n-1)个消息。(Lamport算法还可以作更多的改进!) Ricart和Agrawala算法(非权标) 在Lamport算法的基础上去掉释放消息,或者说将释放消息合并到应答消息中,变成一个许可消息; 一个进程只有收到所有进程的许可后才能访问临界区; Ricart和Agrawala算法(非权标) 具体算法: 当进程Pj收到来自进程Pi的请求时,如果Pj既不请求临界区也不执行临界区,或者它正请求临界区而且它的请求的时戳大于Pi的请求的时戳,那么进程Pj给Pi发回一个许可消息; 进程释放临界区时,发送许可消息给所有被延迟的请求。 Ricart和Agrawala算法(非权标) 算法分析: 一个进程可以同时给许多进程授予许可,但同时只有一个进程可以得到所有进程的许可,因为请求时戳小的高优先级的未决进程不会给请求时戳大的低优先级的进程发送许可,这些低优先级的请求被延迟(缓冲),只有高优先级的进程在执行临界区后、释放时,才发送许可消息给这些被延迟的请求。 需要2(n-1)个消息来实现。 Maekawa算法 Maekawa算法是Ricart和Agrawala算法的扩展; 进程根据一定优先级原则(如请求的到达时间顺序:由于延迟是有限的,不会发生饥饿现象),一次只给一个请求进程授予许可; 进程不用请求所有进程的许可,只需请求一个进程子集的许可(请求子集); 为了实现互斥,任何两个请求子集的交集必须非空,确保同一时刻只有一个进程能得到请求子集里全部进程的许可。(这个非空的交集也是这两个进程的仲裁者) Maekawa算法 具体算法: 假设进程Pi和进程Pj的请求子集分别是Ri和Rj,且Ri?Rj??; 当进程Pi请求临界区时,它只给Ri中的进程发送请求消息; 当进程Pj收到一个请求消息时,若

文档评论(0)

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

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

1亿VIP精品文档

相关文档