第三章分布式协同处理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
P0
P1
P2
请求 OK
C
协调器 a)
P0
P1
P2
请求 无回应
C
2
P0
P1
P2
释放 OK
C
b)
c)
集中式算法
3.2.3 分布式算法(Lamport算法)
第一个分布式方法是由Lamport[1978]提出 的。 算法的工作过程如下。
进程要进入临界区时,建立一个包含临界区名, 进程号和当前时间的消息。然后将该消息发送给 其他所有进程,概念上说也包括发送消息的进程 本身。每个进程管理一个请求队列。
第3章 分布式协同处理
3.1 时间定序与时戳 3.2 分布式互斥算法 3.3 选择算法
3.1 时间定序与时戳
3.1.1分布式算法的基本特征
在集中式方案中,一个场点被指定为中央控制场 点,由它来控制对共享资源的存取。每当一个场点希 望存取一共享对象时,它就向该中央场点发一请求消 息。当所指共享对象可供某场点使用时,控制场点就 回送一个“可以访问”的消息给它。这种方案的弱点 是中央控制场点可能变成瓶颈,而且一旦它故障,整 个系统就崩溃了。可见,一个集中式算法具有两个明 显的特点:
若下面两个条件满足,则时钟条件成立:
条件1:对于进程pi中的两个事件a和b,若a b则有 Ci(a) < Ci(b);
条件2:若a是进程pi发送消息的事件,b是进程pj接收 同一消息的事件,则有Ci(a) < Cj(b)
若按下面方法实现这种逻辑时钟,则上述两条件 可以满足:
⑴进程pi在其任何两个相继的事件之间使Ci增值; ⑵若事件a表示进程pi中发送消息m的事件,则发 送消息m的事件就附有时间戳Tm=Ci(a); ⑶若事件b是进程pj(i j)中接收消息m的事件,pj 就置Cj(b)之值为Cj(b) = max(Cj,Tm)+1
发送进入临界区的请求消息后,进程就坐等其他 进程的许可消息。一但它得到所有进程的许可, 就可以进入临界区了。进程退出临界区时,向在 该进程的队列中的所有进程发送OK消息,并从队 列中删除这些进程。
3.1.2 分布式系统中的事件定序方法
由于没有公共的时钟如何定序分布式系统中的 事件呢?因为进程本身具有顺序性,所以在单个进 程中的事件是按时间完全定序的。此外,根据因果 法则我们可以假定”发送”一个消息的事件发生在 “接收”同一消息的事件之前。
以上两点自然给系统中的事件提供了一个偏序,称之为 HappenedBefore关系(筒称HB),并用“”表示, 其定义如下:
个关系,从而实现整个系统中的事件定序。
现假定,对每个进程pi,有一个与其相关的逻辑时钟 Ci,赋给进程pi中事件a的逻辑时钟之值即Ci(a)。这种逻 辑时钟可用一个计数器实现。若用C表示系统的逻辑时钟, 则为使系统的逻辑时钟C能正确的计值,下面的条件应成 立:
时钟(clock)条件:对系统中的任何事件a和b,若a b,则C(a)<C(b)。
⑴a b
①若a和b是同一进程中的两个事件,且a在b前发生;或 者,
②若a是一进程中发送消息的事件,且b是另一进程中接 收同一消息的事件。
⑵该关系是转移的,即若a b且b c,则有a c。
⑶该关系是非自反的。
⑷若两个不同的事件之间不存在这种关系,即(a b) 且(b a),则a和b称为并发事件。因而,它们可以并 发执行。
分布式系统中实现互斥最直接的方法 就是Байду номын сангаас拟单处理器系统的互斥方法。选择一 个进程作为协调者(即运行在最高网址的机 器上的某个进程)。某个进程要进入临界区 时,向协调者发请求信息,指出它要进入临 界区,然后等待协调者的许可。如果当前没 有其他进程在该临界区中,协调者就返回一 个许可消息,请求信息的进程接收到许可响 应后,就进入临界区,否则就要等待。如下 图所示
⑴只有一个中央控制场点在进行决策; ⑵所有必要的信息都集中在该中央控制场点上。
与之相反,一个分布式算法的基本特征是: ⑴所有的场点都有差不多同等数量的信息; ⑵所有的场点都是根据本地信息来进行决策的; ⑶所有的场点对最终的决策都负有同等的责任; ⑷所有的场点在影响最终决策时都付出了同等的努力; ⑸算法具有强健性,系统的局部故障不影响算法的有 效性。 实际上,不管分布的程度和方式如何,对所有的分布 式算法都有如下两种基本的假定。 假定1每个场点只是整个系统的一部分,且决策都是 根据本地信息进行的; 假定2不存在全系统范围内的公共时钟。
可以证明下列结果: ⑴若a b,则一定不成立b a。 ⑵若a b,则a b。 ⑶若a b,b c则a c。
3.2 分布式互斥算法
分布式互斥的几点要求: (1)安全性 (2)可用性 (3)定序
3.2.1 分布式互斥算法的基本假定
分布式算法有如下的基本假定: ⑴一个分布式系统由n个场点组成,它们从1到n唯
我们称进程pi中的事件a先于进程pj中的事 件b(以a b表示)当且仅当 ⑴Ci(a) < Cj(b);或 ⑵Ci(a) = Cj(b),且pi pj,其中关系“” 是进程的一个任意偏序。
实现关系“”的一个简单方法是给系统中 每个进程赋以一个唯一的进程号,且规定: 若i < j,则pi pj。
假定2是一个主要的制约,因为能确定 出事件发生的先后次序是极其重要的,它 是计算系统中的一个基本概念。例如,在 进行资源分配时,通常规定仅当某资源已 经释放之后才可再次使用它。在分布式系 统中,由于没有公共时钟,所以直接说某 事件在另一事件之前或之后发生是不严格 的。为了确定设计分布式算法的牢固基础, 我们必须寻求一种在全分布式系统范围内 进行事件定序的方法。
并发和HB关系可用图示加以说明,如图3.1所示,
例如,图中某些事件的HB 关系是:
p1 q2
r0 q4
q3 r1 p1 q4(因为p1 q2且q2 q4) 图中的某些并发事件是: q0和p2 r0和q3 r0和p3 q3和p3
图3.1 三个并发进程的相对时间
因此,引进一个系统的逻辑时钟,用它的值来反映这
一地编号,每个场点含有一个进程,而且进程和场点 间存在一一对应的关系。
⑵流水线(pipeline)特性成立,即从一个进程发 送给另一进程的消息是按它们发送的次序接收的。
⑶每条消息在有穷时间间隔内都能正确地转移到它 的目的地。
⑷系统是全互连的,因而每个进程都可直接给其它 的进程发送消息。
3.2.2集中式算法