分布式操作系统3分析.ppt

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

分布式操作系统 第三章 分布式系统的同步 3.1 时钟同步 分布式算法的特点: 相关信息分散在多台机器中; 远程决策仅仅依赖本地信息; 系统中单点故障应该避免; 没有公用时钟或其他精确的全局时间资源存在。 当每台机器都有自己的时钟,一个发生在另一事件之后的事件可能会被标记为比后者更早的时间。 3.1.1 逻辑时钟 时钟点(clock tick):一次时钟中断; 时钟偏移(clock skew):因计时器频率不同而导致多台机器之间的时间偏差; Lamport提出时钟同步的可能 时钟不需要绝对同步; 若两进程间无相互作用,则不需要同步; 若需要同步,则需要解决进程间事件发生顺序的一致性。 相对时间——逻辑时钟 绝对时间——物理时钟 “先发生”(a→b)关系: 如果a和b是在同一进程内的两个事件,且a发生在b之前,则a→b为真; 如果a是一个进程发送消息,b是另一进程接收这一消息的事件,则a→b为真,即消息不能在发送之前接收,也不能在发送的同时接收,因为传送过程还需要一定时间; 先发生是一个传递关系,即若a→b且b→c则a→c。 为每一事件分配一时间值C,当a→b,则有C(a)C(b) Lamport的解决方案: 直接利用先发生关系; 每条消息都携带发送者的时刻值,当消息到达时,若接收者的时钟值比消息发送时钟小,就立刻将自己的时钟调整为比发送时间大1或更多的值; 在某些条件下,将进程号附加在时间值之后,并以小数点隔开。 分布式系统时间分配规则: 若在同一进程内a发生在b之前,则C(a)C(b); 若a和b分别代表发送消息和接收消息,则C(a)C(b); 对所有事件a和b,C(a)C(b)。 3.1.2 物理时钟 太阳日 铯133原子钟:以铯原子133所9192631770次跃迁所用的时间为一秒,简称TAI(International Atomic Time) 闰秒(leap second):因为原子钟时和太阳秒不同步,为减少误差,当原子钟时与太阳秒计时的误差增加到800微秒时,插入一秒。 统一协调时间(UTC) 3.1.3 时钟同步算法 完美情况: 对于所有p和t,都有: Cp(t)=t dC/dt=1 实际情况: 1 - t ≦ dC/dt ≦ 1 + t 不同时钟的速率 Cristian’s算法 设立一台时间服务器,向其他机器提供标准时间。每台机器以σ/2t秒的周期向服务器查询当前时间。服务器服务器在收到消息后尽快回答当前时间CUTC。 时间不能倒退。当CUTC比请求者的C小时,通过减小计数器的值逐步缩小差距; 传输需要时间开销。 从一个时间服务器得到当前时间 Berkeley算法 时间服务器定期询问每台机器的时间,然后基于这些回答计算平均值并告诉每台机器将其时钟拨块或拨慢到一个新的值。 平均值算法 将时间划分为固定长度的再同步间隔,在间隔的开始处,每台机器根据自己的时钟广播发送当前时间。在发送后,启动本地计数器收集在S时间间隔内到达的其他广播,计算后得到新的时间值。 多部外部时钟源 3.1.4 使用同步时钟 至多一次消息传递 传统消息中传递中,消息带有唯一的消息号,当系统故障后重起,将丢失消息号信息表。 利用时间,每天消息都携带一个连接标识和时间戳,每次连接,服务器记录最后一次时间戳,根据时间戳判断消息先后。 全局变量G: G=当前时间-最大生存时间-最大时钟偏移 基于时钟的缓冲存储器的一致性 将缓冲分为读缓冲和写缓冲; 客户需要文件时,服务器提供一个标注有拷贝有效期的租约,无租约或租约期满的文件不能再使用。当租约到期后,客户可向服务器查询拷贝的有效性(时戳未修改),有效则可再续约。 当文件需要被改动,服务器通知其使用者租约提前失效,如客户端没有回应,则等到租约期满后自动失效。 3.2 互斥 在使用临界区时,通过互斥锁提供独享数据结构。在单机系统中,我们使用信号量(semaphores)、管程(monitors)和一些其他结构来保护临界区。 3.2.1 集中算法 利用协调者提供临界区的管理。 3.2.2 分布式算法 当一个进程想要进入临界区,需要向其他进程广播临界区的名字、处理机号和当前时间; 当其他进程收到消息后,根据情况回应: 若不在临界区也不想进入临界区,就向发送者发送OK消息; 若已经在临界区,则不回答,并将请求队列排队; 若需要进入临界区但还没有进入,根据时间戳判断,当来者时间戳小,则发送OK消息;如果时间戳大,则排列请求队列而不发送消息。 问题: 当有进程失效或消息丢失,则被解释为不能进入临界区。解决方法是修改应答机制,不论是否同意都应答。 组通信要使用通信原语,或者每个进程必须维护一组成员表,包括进入组进程、离开组进程和崩溃进程; 请求必须通过全体成员表决,可能产生瓶颈。修改为:不需要所有成员允许即可进入临

文档评论(0)

33qwer + 关注
内容提供者

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

1亿VIP精品文档

相关文档