高级操作系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2012-3-14 7
2.1分布式系统时钟同步
标文件的修改时间后决定那些文件需要重新编译并调 用编译器对其进行编译。在分布式环境中,由于无法 在全局时间上达到一致,所以,情况并非这样简单。 假定output.o output.o的修改时间为2144,在这以后,outpuoutpuoutput.o outpu t.c被修改并被赋予的时间为2143,原因是output.c t.c output.c 所在机器上的时钟要比output.o output.o所在机器上的时钟 output.o 慢。所以,make make程序不调用编译器进行编译,结果, make 最终可执行二进制程序将含有由新老源文件所生成 的目标文件,导致该可执行程序无法运行而程序员 却不知道原因而一直寻找程序代码的错误。因此, 在分布式系统中,时钟同步是非常重要的,也是必 不可少的。
2012-3-14 10
2.1分布式系统时钟同步
2.1.1 逻辑时钟同步算法 原因是时钟不同步不会产生什么问题。系统中的进 程不需要在事件发生的确切时间上达成一致而只需 要在事件发生的先后顺序上达成一致即可。在make make 例子中,make make只需要知道input.c input.c是否比input.o input.o生成 make input.c input.o 的早即可,而无须知道input.c input.o input.c和input.o input.c input.o确切的生成 时间。在许多应用中,只要所有机器都认可某一时间 就足够了, 而这个时间无须与收音机每小时广播的 时间相同。例如,尽管现在真正的时间是10:02,但只 要所有机器都认为现在是10:00,我们说系统的时钟 是同步的。我们把这种并不一定是真正时间但所有 机器都一致认可的时钟称之为逻辑时钟 逻辑时钟。如果我们 逻辑时钟
2012-3-14 11
2.1分布式系统时钟同步
2.1.1 逻辑时钟同步算法 增加一个条件:所有的时钟不仅一致而且与实际时间 之间的误差不超过某个值。那么,这种时钟我们称之 为物理时钟 物理时钟。 物理时钟 为了将逻辑时钟进行同步,Lamport Lamport定义了一种称 Lamport 在之前发生的关系。表达式a→b读做”a在b之前 之为在之前发生 在之前发生 发生”。它表示所有的进程都认为事件a先发生,而事 件b后发生。a→b存在于下列两种情况: 1.如果a和b都是同一个进程中的两个事件且a在b之前 发生,则a→b为真。 2.如果a是一个进程发送一个消息的事件且b是另一个 进程接收该消息的事件,则a→b为真。
高级操作系统 Advanced Operating System
熊焰 Yxiong@ustc.edu.cn 0551_3600689 中国科学技术大学计算机系
2012-3-14
1
第二章 分布式系统同步
分布式系统时钟同步 分布式互斥 分布式选举算法 分布式系统死锁
2012-3-14
2
2.1分布式系统时钟同步
2012-3-14 13
2.1分布式系统时钟同步
2.1.1 逻辑时钟同步算法 例如,图2-1(a)中有三个进程。每一个进程都 图 运行在不同的机器上且每一个机器都有一个自己的时 钟以各自的速度走时。当进程0中的时钟滴答6次时, 进程1滴答8次,而进程3滴答10次。每一个时钟的走 时速度是恒定的。在时间为6时,进程0发送了一个消 息A给进程1。进程1在时间为16时收到了消息。如果 消息中含有消息开始发送的时间值6,则进程1认为该 消息的传输花费了10次滴答。同理,消息B从进程1传 输到进程2花费了16次滴答。但是,由进程2发给进程1 的消息C在发送时的时间值为60而在接收时的时间值 为56。这样,消息C的传输时间为负值。
2012-3-14 14
2.1分布式系统时钟同步
2.1.1 逻辑时钟同步算法
0 0 6 12 18
24 30 36 42 48 54 60
A
1 0 8 16 24
32 40 48 56 64 72 80
B
2 0 10 20 30
40 50 60 70 80来自百度文库90 100
0 0 6 12 18
24 30 36 42 48 70 76
2012-3-14 5
2.1分布式系统时钟同步
前三点表明由一个机器收集所有的信息进行处理 是不可能的。例如,在资源分配时,将所有请求发送 给一个管理者进程,由它根据表中的信息来考察所有 的请求并决定资源的分配。这在分布式系统中必将 造成某一个进程负担过重。此外,一个分布式系统应 该比单机系统更可靠。如果一个机器崩溃了,其余的 机器应能继续工作,而不至于使系统瘫痪。第四点也 是非常重要的。在单机系统中,时间是确定的。如果 一个进程想要知道时间,则它可以调用一个系统调用 由内核告诉它当前的时间值。如果一个进程先得到 时间值而另一个进程后得到时间值,那么,先得到的 时间值一定比后得到的时间值小,然而,在分布式系 统中,所有机器要在时间上达到一致是非常困难的。
2012-3-14
15
2.1分布式系统时钟同步
2.1.1 逻辑时钟同步算法 Lamport解决这个问题的算法:每一个消息都含有一个 Lamport 发送者时钟的发送时间,当消息到达时,接收者将自己 时钟的接收时间与发送时间相比较。如果接收时间小 于等于发送时间,则接收者的时钟被修改成发送时间 加1。如果接收时间大于发送时间,则不改变接收者的 时钟。 因此,消息C到达进程1的时间改为61,消息D到达进 程0的时间改为70(见图2-1(b) 图 1(b))。 Lamport算法还必须满足一个要求:任意两个事件的时 Lamport 间之差至少为1。如果一个进程连续发送或接收两个 消息,则这两个消息的时间之差也至少为1。 我们对不同进程内两个同时发生的事件是这样赋 时间值的:
A
1 0 8 16 24
32 40 48 61 69 77 85
B
2 0 10 20 30
40 50 60 70 80 90 100
C
C
D
D
(a) (b) 图2-1. (a)三个进程,每一个进程都有自己的时钟。三个时钟都以不同的速度走时。 (b)Lamport Lamport修改时钟算法。 Lamport
2012-3-14 17
2.1分布式系统时钟同步
2.1.2 物理时钟同步算法 如果某台机器有一个WWW WWW接收器接收标准时间,那么, WWW 时钟同步算法的目的就是让所有机器的时钟与该机器 的时钟进行同步。如果没有一台机器具有WWW WWW接收器 WWW 且每一台机器都有自己的时钟,那么,时钟同步算法的 目的就是使得所有机器的时钟尽可能地一致。假定每 一个机器都有一个每秒中断H次的定时器。定时器中 断一次,中断处理程序就将软件时钟加1。该软件时钟 保存滴答(即中断)次数。我们定义这个软件时钟的值 为C。 当UTC UTC(一种标准的时间源)时间为t,则机器p上时钟 UTC 值为 Cp(t)。在理想情况下,对于所有的p和t, Cp(t)= t。换句话说,dC/dt=1。
2012-3-14 6
2.1分布式系统时钟同步
首先,我们看一看在分布式系统中缺乏全局时间所 产生的影响。考察Unix Unix中的make make程序。通常,一个大 Unix make 程序分成多个源文件。这样,对其中某一个文件的修 改只需要对被修改的这个文件进行重编译,而无须对 所有的源文件进行编译。当调用make make程序时,Make make Make 程序考察所有源文件和对应目标文件的修改时间。 如果源文件input.c input.c的修改时间为2155且对应目标文 input.c 件input.o input.o的修改时间为2151,那么,make make程序知道 input.o make input.c已被修改。input.c input.c必须被重新编译。如果 input.c input.c output.c的修改时间为2144且对应目标文件outpu output.c outpu t.o的修改时间为2145,则不需要对output.c output.c进行重 t.o output.c 新编译。Make Make程序在考察完所有源文件和其对应目 Make
2012-3-14 4
2.1分布式系统时钟同步
分布式系统中的同步比单机系统中的同步要复杂 的多,原因是前者必须使用分布式算法。在分布式系 统中,由某一个机器收集整个系统的所有信息,然后, 让这个进程考察这些信息并作出一个决定通常是不 大可能的,也不是人们所希望的。因此,分布式算法 应具有下列特性: 1.相关的信息是分布在多个机器上的。 2.进程根据局部信息来作出决定。 3.对系统中任一个机器的失败应能容错。 4.不存在公共时钟或其它全局时间源。
2012-3-14 12
2.1分布式系统时钟同步
2.1.1 逻辑时钟同步算法 在之前发送是一个传递关系,如果a→b且b→c,则 在之前发送 a→c。如果两个事件x和y分别发生在两个不同的进程 内且x和y不是同一个消息的发送和接收事件,则x→y 不为真, y→x亦不为真。我们将这两个事件称之为是 并发事件。 并发事件 度量时间的方法:对于每一个事件a,我们给a分配一 个所有进程都认可的时间值C(a)。这种时间值必须具 有一个特性:如果a→b,则C(a)<C(b)。时钟时间C是一 直向前走的(即增加),不会向后退(即减少)。时间的 修改只能增加而不能减少。
在分布式系统中: 进程之间的通信:采用消息传递(Messagepassing),而不是通过共享存储器进行通信的。 与进程通信密切相关的问题:进程之间是如何彼 此协作和同步的。 例如,分布式系统中临界区是如何实现的以 及资源是如何分配的?在单机系统中,临界区、 互斥和同步一般都是采用信号灯和管程等方法来 解决的。这些方法却并不能很好地应用于分布式 系统,其原因是这些方法都是建立在共享存储器
2012-3-14 9
2.1分布式系统时钟同步
2.1.1 逻辑时钟同步算法 布式系统中,情况与单机系统完全不同。虽然每一个 晶体震荡器的频率相当稳定,但也无法保证不同机器 上晶体的震荡频率完全相同。实际上,分布式系统中, n个计算机上的时钟值都不相同。因此,需要一种方 法将所有机器上的时钟进行同步。 Lamport在1978年指出时钟同步是可能的并提出 Lamport 了一个逻辑时钟同步算法。在1990年,Lamport Lamport扩展 Lamport 了他的工作。Lamport Lamport指出时钟的同步不是绝对的。 Lamport 如果两个进程并不交互,则它们的时钟就无须同步。
2012-3-14 3
2.1分布式系统时钟同步
基础上的。两个采用信号灯进行交互的进程必须 能够访问到这个信号灯。如果这两个进程是运行 在同一台机器上,那么它们只要将信号灯存放在 机器的内核中,就可以共享到这个信号灯。但是, 如果它们运行在不同的机器上,则共享信号灯的 方法再也无效了。因此,需要一些新的方法来解 决分布式系统中进程间交互的问题。 在这一章我们将讨论分布式系统中与进程间协 作和同步有关的问题。首先,我们引入时间的度 量,因为时间在分布式同步中起着重要的作用, 其次,介绍分布式互斥和选举算法;最后,讨论分布 式系统的死锁。
2012-3-14 8
2.1分布式系统时钟同步
2.1.1 逻辑时钟同步算法 所有计算机上都有一个: 记录时间的电路---称之为时钟---它实际上是一个定 时器---一个以某个频率进行震荡的石英晶体。 与定时器相关的两个寄存器分别称之为计数器 计数器和 计数器 保持寄存器。晶体每震荡一次,计数器就减一。当计 保持寄存器 数器变为0时,一个中断产生并将保持寄存器的值重 新装入到计数器中。 因此,我们可以对定时器进行编程使得定时器每秒 钟中断60次。每一次中断称之为一次时钟滴答 时钟滴答。 时钟滴答 在单机系统中,时钟快一点或慢一点都无关紧要, 因为单机上的所有进程都使用同一个时钟。每一个 进程所得到的时钟值在本机内是一致的。但是,在分
2012-3-14 16
2.1分布式系统时钟同步
2.1.1 逻辑时钟同步算法 事件发生的时间值与该事件所属进程的进程号连接起 来,中间用’.’加以分隔。例如,进程1和进程2中两个 事件恰好同时在时间为40时发生。进程1中的事件发 生时间为40.1而进程2中的事件发生时间为40.2。 由此我们可以对系统中所有事件按如下方法赋时 间值: 1.在同一进程中,如果事件a在事件b之前发生,则 C(a)<C(b)。 2.如果a和b分别是一个消息的发送和接收事件,则 C(a)<C(b)。 3.对所有事件a和b,C(a)≠C(b)。
相关文档
最新文档