OS之分布式系统中的同步问题.ppt
《OS之分布式系统中的同步问题.ppt》由会员分享,可在线阅读,更多相关《OS之分布式系统中的同步问题.ppt(132页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、分布式系统中同步问题分布式系统中同步问题一、时钟同步一、时钟同步分布式系统特点:分布式系统特点:相关的信息分布在多台机器上相关的信息分布在多台机器上没没有有共共享享内内存存进进程程只只根根据据本本地地可可用用的的信信息息做做出决策出决策系系统统中中不不存存在在公公共共时时钟钟或或其其它它精精确确的的全全局局时时间源间源在集中式系统中,时间是很明确的在集中式系统中,时间是很明确的 时钟同步时钟同步例子例子UNIX的的Make,检查文件最后修改时间,检查文件最后修改时间创创建建input.o后后,源源input.C修修改改了了,要要重重新新编译编译input.C设设 ouput.o的的 修修 改改
2、 时时 间间 是是 2000。创创 建建output.o后即修改了源后即修改了源output.c但但编编辑辑output.c的的机机器器时时钟钟慢慢,修修改改后后output.c时间被时间被1999make不不会会重重新新编编译译output.c,程程序序的的运运行行会出现问题会出现问题二、逻辑时钟二、逻辑时钟(1)只只关关心心时时钟钟内内部部一一致致性性,不不关关心心时时钟钟是是否否与与实际时间一致实际时间一致1978年年Lamport指指出出,系系统统中中的的时时钟钟并并不不需要绝对的同步需要绝对的同步重重要要的的不不是是进进程程有有完完全全一一致致的的时时间间,而而是是事事件发生的先后次
3、序要一致件发生的先后次序要一致二、逻辑时钟二、逻辑时钟(2)发生之前(发生之前(happens-beforehappens-before)关系定义)关系定义表达式表达式a b读作读作“a发生在发生在b前前”即即所所有有进进程程都都认认为为事事件件a先先发发生生,然然后后才才发发生事件生事件b事件事件a,有一个时间值,有一个时间值C(a)如如果果a和和b是是同同一一进进程程中中的的事事件件,而而且且a发发生生在在b前前那么那么a b为为true,C(a)C(b)二、逻辑时钟二、逻辑时钟(3)传递性传递性 Happens-before关系具有传递性关系具有传递性 如如果果a b和和b c都都成成立
4、立,a c也也成成立立并发事件:并发事件:如如果果事事件件x和和y发发生生在在不不同同的的进进程程中中,且且这这两两进程间不交换信息进程间不交换信息 那那么么x y和和y x都都不不成成立立。这这两两个个事事件件就就称为并发事件称为并发事件并并发发意意味味着着两两个个事事件件发发生生时时,无无法法确确定定哪哪个个事件先发生,或者说不需要考虑此事事件先发生,或者说不需要考虑此事时时钟钟时时间间C必必须须向向前前(不不断断增增加加),不不能能后后退(减小)退(减小)对对时时间间的的更更新新,只只能能是是在在时时钟钟上上加加一一个个正正数数,不能减正数不能减正数Lamport算法算法(1):例子说明
5、例子说明(1)三三个个进进程程运运行行在在不不同同的的有有自自己己时时钟钟的的机机器器上上,每个时钟按自己的速度运行每个时钟按自己的速度运行可可以以看看到到,进进程程0中中时时钟钟有有6次次嘀嘀嗒嗒时时,进进程程1已经有了已经有了8次,而进程次,而进程2已经有了已经有了10次次Lamport算法算法(2):设设,计计时时器器每每秒秒生生成成60次次中中断断,每每次次中中断断称称为一个时钟嘀嗒为一个时钟嘀嗒从从进进程程2发发送送该该进进程程1的的消消息息C,其其发发送送时时刻刻为为60,到达时刻为,到达时刻为56同同样样,从从进进程程1到到进进程程0的的消消息息D,其其发发送送时时刻为刻为64,
6、到达时刻为,到达时刻为54这这显显然然是是不不可可能能的的,也也是是必必须须避避免免出出现现的的情情况况例子说明例子说明(2)Lamport算法算法(3):消消息息c的的发发送送时时间间为为60,它它的的到到达达时时间间一一定定在时刻在时刻61或或61之后之后让每条消息都携带发送者时钟的发送时刻让每条消息都携带发送者时钟的发送时刻当当消消息息到到达达接接收收时时,如如果果接接收收者者的的时时钟钟指指示示值先于发送消息的时间值先于发送消息的时间接接受受者者的的时时钟钟值值就就应应快快于于消消息息发发送送时时刻刻加加1之后时间值之后时间值例子说明例子说明(3)Lamport算法算法(4):Lamp
7、ort算法算法(5):两个事件之间,时钟至少应间隔一个嘀嗒两个事件之间,时钟至少应间隔一个嘀嗒如如果果一一个个进进程程依依次次快快速速发发送送或或接接收收两两条条消消息息,就必须调整时钟就必须调整时钟使两个事件之间(至少)间隔一个时钟嘀嗒使两个事件之间(至少)间隔一个时钟嘀嗒附附加加条条件件,没没有有两两个个事事件件是是精精确确地地在在同同一一时时刻发生的:刻发生的:1.在同一进程中,如果在同一进程中,如果a在在b前面发生,前面发生,那么那么C(a)C(b)2.如果如果a与与b分别代表消息的发送和接收,分别代表消息的发送和接收,那么那么C(a)C(b)3.对于所有的事件对于所有的事件a与与b而
8、言,而言,C(a)C(b)Lamport算法算法(6):算法给出系统中所有事件的整体定序方法算法给出系统中所有事件的整体定序方法该算法在学术界中得到广泛认同该算法在学术界中得到广泛认同Lamport算法算法(7):三、时钟三、时钟(1)在在某某些些系系统统中中,实实际际的的时时钟钟时时间间非非常常重重要要,需要物理时钟需要物理时钟如何使物理时钟与世界的时钟同步?如何使物理时钟与世界的时钟同步?物理时间之间如何保持同步?物理时间之间如何保持同步?原子钟可以准确度量时间原子钟可以准确度量时间世世界界时时(Universal Coordinated Time)简称简称UTCUTC是现代计时的基础是现
9、代计时的基础National Institute of Standard TimeNIXT,国家标准时间组织短波电台,国家标准时间组织短波电台,WWV每每个个UTC秒秒的的起起始始时时刻刻,WWV就就发发送送一一个个短脉冲短脉冲WWV本身的误差大约为本身的误差大约为+-1毫秒毫秒物理时钟物理时钟(2)四、时钟同步算法四、时钟同步算法如果某台机器有如果某台机器有WWV接收器接收器时时钟钟同同步步的的目目的的是是使使其其它它机机器器与与这这台台机机器器同同步步时钟同步算法的基本模型时钟同步算法的基本模型(1)设设每每台台机机器器都都有有个个计计时时器器,该该计计时时器器每每秒秒中中断断H次次计计时
10、时器器溢溢出出时时,中中断断处处理理程程序序就就将将软软件件时时钟钟加加1软软件件时时钟钟是是从从过过去去某某一一已已知知时时间间开开始始所所经经历历的的tick数数这这个个时时钟钟的的值值称称为为C。当当UTC时时间间为为t时时,机机器器p的时钟值为的时钟值为Cp(t)理想情况下理想情况下dC/dt应为应为1理理论论上上,当当H=60时时,计计时时器器应应每每小小时时生生成成216,000次次ticks实实际际上上,计计时时器器芯芯片片的的相相对对误误差差大大约约为为10-5,即即 每每 小小 时时 的的 tick数数 的的 范范 围围 为为 215,998到到216,002 准确地说,如果
11、存在一个常数准确地说,如果存在一个常数p 1-dC/dt 1+成立,就可以认为计时器是正常工作的成立,就可以认为计时器是正常工作的时钟同步算法的基本模型时钟同步算法的基本模型(2)如果两个时钟偏离如果两个时钟偏离UTC的方向相反的方向相反那么在同步之后的那么在同步之后的t时刻时时刻时它们的时差为它们的时差为2 t要保证两个时钟间时间差不超过要保证两个时钟间时间差不超过必须至少每隔必须至少每隔/2秒重新同步秒重新同步Cristian算法算法(1)某台机器拥有某台机器拥有WWV接收器的系统的算法接收器的系统的算法时时钟钟同同步步的的目目的的就就是是使使其其它它机机器器与与有有WWV接收器的机器保持
12、同步接收器的机器保持同步有有WWV接接收收器器的的机机器器称称为为时时间间服服务务器器(time server)Cristian算法算法(2)系系统统中中每每台台机机器器至至少少每每隔隔/2秒秒就就向向时时间间服服务器发送一条消息务器发送一条消息 查询当前时间查询当前时间服服务务器器尽尽快快将将携携带带当当前前时时间间CUTC的的消消息息返返回回给请求者给请求者一种近似方法一种近似方法 发发送送者者得得到到时时间间服服务务器器的的响响应应后后,直直接接将将其其时钟值设置为时钟值设置为CUTCCristian算法算法(3)笫一个问题:时间决不能倒退笫一个问题:时间决不能倒退 如果这个请求发送者的
13、时钟比实际时间快如果这个请求发送者的时钟比实际时间快 这这时时仅仅将将CUTC设设置置为为时时钟钟的的当当前前值值会会引引起起严严重问题重问题Cristian算法算法(4)对时钟的调整必须逐步进行对时钟的调整必须逐步进行一种方法:假设计时器每秒中断一种方法:假设计时器每秒中断100次次 正正常常情情况况下下,每每次次中中断断将将时时钟钟时时间间增增加加10毫毫秒秒 如如果果要要使使时时钟钟慢慢下下来来,中中断断程程序序就就每每次次只只将将时间增加时间增加9 直到将时间矫正过来为止直到将时间矫正过来为止Cristian算法算法(5)同样,每次中断时将时间加同样,每次中断时将时间加11毫秒,毫秒,
14、就会逐渐将时钟调快,就会逐渐将时钟调快,而不应直接将时钟值设快而不应直接将时钟值设快Cristian算法算法(6)第二个问题第二个问题 时时间间服服务务器器将将当当前前时时间间发发送送给给查查询询时时间间的的机机器需要时间器需要时间 这个延迟时间可能会很长,而且它也在变化这个延迟时间可能会很长,而且它也在变化 Cristian的的处处理理方方法法就就是是计计算算出出准准确确的的延延迟迟时间时间 为为了了提提高高估估计计值值的的准准确确性性,建建议议要要进进行行一一系系列的测量列的测量Berkeley UNIX算法算法(1)时时间间服服务务器器是是活活动动的的,它它定定期期向向其其他他机机器器查
15、查询这些机器的时间询这些机器的时间根根据据得得到到的的响响应应,时时间间服服务务器器计计算算出出一一个个平平均值均值并通知其它机器调整其时钟并通知其它机器调整其时钟Berkeley UNIX算法算法(2)重复这个过程,直到达到一定的缩减量为止重复这个过程,直到达到一定的缩减量为止这这种种方方法法适适用用于于那那些些没没有有WWV接接收收器器的的系系统统在在这这样样的的系系统统中中,操操作作员员必必须须阶阶段段性性地地手手工工设置时间的时间设置时间的时间五、互斥问题五、互斥问题在分布式系统中,临界区和互斥如何实现在分布式系统中,临界区和互斥如何实现1.集中式算法集中式算法在在分分布布式式系系统统
16、中中,实实现现互互斥斥的的最最简简单单算算法法是是模拟单处理机的情形模拟单处理机的情形集中式算法基本思路集中式算法基本思路一个进程作为协调者一个进程作为协调者其他进程要进入临界区须先发出请求消息其他进程要进入临界区须先发出请求消息 说明要进入哪一个临界区说明要进入哪一个临界区如果在那个临界区中,当前没有其他进程如果在那个临界区中,当前没有其他进程 那么协调者就发出批准那么协调者就发出批准当批准到达请求的机器后当批准到达请求的机器后 发出请求的进程就进入临界区发出请求的进程就进入临界区集中式算法评价集中式算法评价显然本算法中由协调者保证互斥显然本算法中由协调者保证互斥算法是公平的算法是公平的因因
17、为为按按收收到到请请求求的的先先后后顺顺序序,考考虑虑是是否否发发出出回答回答不会出现有某个进程永远等待的现象不会出现有某个进程永远等待的现象算法的缺点,协调者是一个单点失效的机制算法的缺点,协调者是一个单点失效的机制 如如果果协协调调者者垮垮台台了了,是是“不不允允许许”呢呢,还还是是它自身垮台了呢?它自身垮台了呢?2.分布式算法分布式算法(1)Richart与与Agrawala(R&A)算法算法要求在系统中,对所有事件安排一个次序要求在系统中,对所有事件安排一个次序进程在进入临界区之前,先构造一条消息进程在进入临界区之前,先构造一条消息消消息息中中包包含含有有要要进进入入的的临临界界区区的
18、的名名称称、进进程程编号以及当前时间编号以及当前时间把该消息发给所有其他的进程把该消息发给所有其他的进程分布式算法分布式算法(2)为为简简单单起起见见,假假定定消消息息的的发发送送是是可可靠靠的的,每每一进程都认可收到了此消息一进程都认可收到了此消息各个进程依据情况,发回消息各个进程依据情况,发回消息如如果果接接受受方方不不在在临临界界区区中中并并且且也也不不想想进进入入,那么发出那么发出OK如如果果接接受受方方已已在在临临界界区区内内,那那么么不不应应答答,并并把该消息放到队列中把该消息放到队列中如果接受方也想进临界区,但还没有进入如果接受方也想进临界区,但还没有进入 比较收到的消息和自己发
19、出消息的时间戳比较收到的消息和自己发出消息的时间戳分布式算法分布式算法(3)如果收到消息中的时间戳早,则发出如果收到消息中的时间戳早,则发出OK如如果果自自己己的的消消息息较较早早,那那么么不不发发消消息息,并并把把请求送入队列请求送入队列请请求求的的进进程程要要等等到到所所有有其其他他进进程程回回送送允允许许消消息为止息为止当当所所有有的的允允许许消消息息都都到到达达后后,该该进进程程就就可可以以进入申请的临界区进入申请的临界区退退出出临临界界区区后后,该该进进程程向向在在其其队队列列中中的的所所有有其他进程发出其他进程发出OK分布式算法分布式算法(4)算法关键算法关键 当发生有冲突的申请时
20、当发生有冲突的申请时 所有进程均同意有小时间戳一方取胜所有进程均同意有小时间戳一方取胜分布式算法评价分布式算法评价算法中不存在单点失效算法中不存在单点失效 却出来了多点失效却出来了多点失效一个进程垮台后,它不响应外来的请求一个进程垮台后,它不响应外来的请求 还阻塞了后续试图进入临界区的进程还阻塞了后续试图进入临界区的进程该该算算法法仅仅使使出出错错概概率率增增大大了了,而而且且还还要要占占用用大量网络资源大量网络资源分布式算法评价分布式算法评价(2)补救方法,在发送方设置有超时的反应机制补救方法,在发送方设置有超时的反应机制该机制不断询问直到有一个回答收到该机制不断询问直到有一个回答收到或或者
21、者在在经经过过一一段段设设定定的的时时间间段段后后,得得出出结结论论,接收方有故障接收方有故障这个算法,速度慢,复杂,开销也大这个算法,速度慢,复杂,开销也大但至少表明了,分布式算法是可行的但至少表明了,分布式算法是可行的3.令牌环网算法令牌环网算法(1)一一个个分分布布式式系系统统,内内部部的的进进程程构构成成了了一一个个逻逻辑上的环形网辑上的环形网所有的进程都知道它的后续者是谁所有的进程都知道它的后续者是谁设令牌从进程设令牌从进程k传到进程传到进程k+1沿环传递沿环传递当当进进程程得得到到令令牌牌后后,首首先先看看是是否否需需要要进进入入临临界区界区如如果果需需要要,进进程程进进入入临临界
22、界区区,进进行行所所需需的的操操作作在撤出临界区后,该进程让令牌沿环传递在撤出临界区后,该进程让令牌沿环传递令牌环网算法令牌环网算法(2)本本算算法法规规定定,进进程程不不允允许许用用同同一一张张令令牌牌进进入入第二个临界区第二个临界区如如果果一一个个进进程程得得到到了了令令牌牌,但但不不打打算算进进入入临临界区界区 那么它就继续传递令牌那么它就继续传递令牌如如果果没没有有进进程程想想进进入入临临界界区区,令令牌牌则则沿沿着着环环路高速循环路高速循环令牌环网算法评价令牌环网算法评价(1)算法的正确性是明显的算法的正确性是明显的因为任何时刻,只有一个进程持有令牌因为任何时刻,只有一个进程持有令牌
23、在临界区中只可能有一个进程在临界区中只可能有一个进程由由于于巳巳经经规规定定好好令令牌牌传传递递次次序序,所所以以不不可可能能发生死锁发生死锁最最坏坏情情况况是是,排排在在最最后后的的进进程程要要等等到到其其他他进进程程都都进进入入临临界界区区,完完成成操操作作,并并离离开开之之后后,才轮到它才轮到它令牌环网算法评价令牌环网算法评价(2)算法的问题算法的问题 如如果果令令牌牌因因为为某某种种原原因因丢丢失失了了,就就必必须须重重新新生成一个生成一个但是如何探测令牌是否丢失,却是一件难事但是如何探测令牌是否丢失,却是一件难事令令牌牌在在一一小小时时之之内内没没有有传传递递,不不意意味味着着丢丢失
24、失了,可能某个进程还在使用它了,可能某个进程还在使用它令牌环网算法评价令牌环网算法评价(3)另另一一个个问问题题,如如果果某某个个进进程程垮垮台台了了,算算法法也也会碰到麻烦会碰到麻烦补救方法,进程收到令牌后,给予认可补救方法,进程收到令牌后,给予认可在进程试图把令牌递交给邻居后在进程试图把令牌递交给邻居后 如如果果在在规规定定时时限限内内没没有有认认可可回回答答,就就判判定定该该邻居是死进程邻居是死进程于是令牌越过死进程,传到下一个进程中于是令牌越过死进程,传到下一个进程中六、典型选举算法:威力六、典型选举算法:威力(Bully)算法算法分布式系统需要有一个进程担当协调者分布式系统需要有一个
25、进程担当协调者完成一些特别的工作任务完成一些特别的工作任务如何选择进程来担当协调者如何选择进程来担当协调者威力威力(Bully)算法算法(1)假定每台机器只有一个进程假定每台机器只有一个进程 每一进程都有一个单独的编号每一进程都有一个单独的编号还假定每一进程都了解其他进程的编号还假定每一进程都了解其他进程的编号选举算法的目的选举算法的目的 试试图图挑挑出出一一个个具具有有最最高高进进程程编编号号的的进进程程,委委任它为协调者任它为协调者确确认认如如下下规规则则,当当选选举举开开始始以以后后,它它会会得得出出结论结论威力威力(Bully)算法算法(2)所所有有的的进进程程都都同同意意某某个个进进
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OS 分布式 系统 中的 同步 问题
限制150内