- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 向量时间戳 向量时戳VT VT是一个整数数组: e.VT[i]=k表示在节点i(或 Pi)上,因果关系上e之前有k 个事件(可能包括e自己) e.VT=(3,6,4,2)表示因果序: 在P1上,有3个事件须在e之前 在P2上,有6个事件须在e之前 在P3上,有4个事件须在e之前 在P4上,有2个事件须在e之前 P1 P2 P3 1 P4 3 2 5 4 3 1 2 1 5 4 1 6 4 2 3 1 3 2 e * 向量时间戳 向量时戳的意义 在因果关系上,e1.VT ≤V e2.VT表示e2发生在 e1及e1前所有的事件之后 更精确的说,向量时钟的次序为: e1.VT≤V e2.VT iff e1.VT[i]≤ e2.VT[i],i=1,2,…,M e1.VTV e2.VT iff e1.VT≤ VTe2.VT且e1.VT≠e2.VT 向量时戳算法 my_VT:每个节点有局部的向量时戳 e.VT:每个事件有向量时戳 m.VT:每个msg有向量时戳 节点执行一个事件时,将自己的时戳赋给该事件; 节点发送msg时,将自己的时戳赋给所有发送的msg。 * 向量时间戳 算法实现: Initially:my_VT=[0,…,0]; On event e: if ( e是消息m的接收者 ) then for i=1 to M do //向量时戳的每个分量只增不减 my_VT[ i ] = max( m.VT[i], my_VT[i] ); my_VT[ self ]++; //设变量self是本节点的名字 e.VT=my_VT; //给事件e打时戳 if ( e是消息m的发送者 ) then m.VT=my_VT; //给消息m打时戳 * 向量时间戳 算法性质 1)若eH e,则e.VTVT e.VT ∵算法确保对于每个事件满足: 若eP e或em e ,则e.VTVT e.VT 2)若e≮H e,则e.VT≮VT e.VT pf:若e和e 因果相关,则有e’H e,即e.VTVT e.VT 若e和e‘ 是并发的,则在H-DAG上,从e到e’和从e’ 到e均无有向路径,即得: e.VT≮VT e.VT 且 e.VT ≮VT e.VT * 向量时间戳 向量时戳比较 e1.VT=(5,4,1,3) e2.VT=(3,6,4,2) e3.VT=(0,0,1,3) 1)e1和e2是并发的 ∵e1.VT[1]e2.VT[1] e1.VT[2]e2.VT[2] ∴e1到e2及e2到e1均无路径 2)e3在因果序上先于e1 即:e3.VTV e1.VT e1的前驱事件见方框 P1 P2 P3 1000 P4 3300 2300 5413 4400 1300 1200 0100 3500 1400 0010 3642 0142 0120 0132 0011 0013 0012 e2 e3 e1 * 向量时间戳 因果序检测 1)消息时戳间比较 在P2上,先到达的M3的时戳为 (3,0,3),后到达的M1的时戳 为(1,0,0)。但是: ∵ (1,0,0)V (3,0,3) ∴ M1在因果序上先于M3 故M1后于M3到达违反因果序 2)消息时戳和局部时戳比较 当时戳为(1,0,0) 的M1到达P2 时,P2的时戳是(3,2,3)。但: ∵ (1,0,0)V (3,2,3) ∴ M1在因果序上应先于(3,2,3)对应的事件 P1 P2 P3 M1 On P2 Where is O? 迁移O到P2 I don’t know M2 Where is O? M3 Error! 100 201 301 001 302 303 303 313 323 324 * 因果通信 如何保证通信不违反因果关系? 处理器不能选择msg达到的次序,但能抑制过早达到的msg来修正传递(指提交给应用)次序 FIFO通信(如TCP) 由msg传递协议栈里的一层负责确保FIFO通信 Application FIFO orde
文档评论(0)