[发明专利]一种大规模协同环境下的因果并发检测方法无效
申请号: | 200710045404.2 | 申请日: | 2007-08-30 |
公开(公告)号: | CN101127644A | 公开(公告)日: | 2008-02-20 |
发明(设计)人: | 顾宁;张琦炜;杨江明;苏毅 | 申请(专利权)人: | 复旦大学 |
主分类号: | H04L12/26 | 分类号: | H04L12/26;H04L29/06;G06F17/21 |
代理公司: | 上海正旦专利代理有限公司 | 代理人: | 陆飞;盛志范 |
地址: | 20043*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 大规模 协同 环境 因果 并发 检测 方法 | ||
1.一种大规模协同环境下的因果并发检测方法,其特征在于具体步骤如下:
1)判断一个远程操作是否因果就绪,其步骤为:对于站点S上一个尚未执行的远程操作Or,
(1)找出所有它的直接因果依赖于的那些操作;
(2)对于每一个这样的操作,判断是否已经在站点S上得到了执行,操作Or是因果就绪的,当且仅当对于DCV(Or)中的每一个分量(Si,Ni)都有SVs[Si]>Ni,其中,i为协同站点编号;SVs站点S上的状态向量;
2)找出与当前远程操作并发的所有历史操作,采用并发历史操作查找算法,找出与当前远程操作并发的所有历史操作,其步骤为:
(1)该算法的输入为待同步的因果就绪的远程操作,输出为历史记录中与该操作并发的操作组成的集合;设candidates是一个操作集合,它初始包含DCH中的所有操作,从这些操作开始,以因果顺序相反的顺序检查历史操作缓存中的历史操作,这里,candidates为候选并发操作集;
(2)对candidates中的每个操作OH,检查它是否直接因果先序于Or,如果OHOr,则检查OH是否是DCH中的元素,如果是,就将它从DCH中移除,同时根据DSC的定义调整DSC记录,将DSC[OH]的值增1;
(3)如果则将OH加入同时调整数据结构,算法对每一个满足OxOH的操作Ox调整
3)判断任意两个历史操作间的因果并发关系,
(1)构造因果关系缓存过程:以一个操作OR的历史并发操作集为输入,对它做压缩,删除冗余,并返回压缩后的版本算法中,函数SITE(O)的返回值是操作O的生成站点,函数GEN_SEQ(O)的返回值是操作O的生成序号;
具体步骤如下:
1)算法遍历史并发操作集中的每一个操作OH;
2)如果为空集,意味着操作OH是中遍历到的第一个由站点SITE(OH)生成的与操作OR并发的操作,则用OH的生成序号初始化
3)如果不为空,则比较GEN_SEQ(OH)与用MIN(GEN_SEQ(OH),更新
(2)任意历史操作间因果关系判断方法的步骤为:
①比较它们的执行序号;
②假定本地站点上Oa在Ob之前被执行,于是只可能有Oa→Ob或Oa||Ob;如果Ob是本地操作,那么必然有Oa→Ob:
③如果Ob是远程操作,则检查因果关系缓存,如果或
其中,相关定义如下:
(1)直接因果先序关系(),给定两个任意的操作Oa和Ob,Oa直接因果先序于Ob,记为OaOb,当且仅当(1)Oa→Ob并且(2)不存在一个操作Oc,满足Oa→Oc且Oc→Ob;
(2)直接因果先序向量时间戳,简称DCV,给定一个操作O,假设O1,O2,...,Ok是所有直接因果先序于O的操作,O1是站点S1上产生的第N1个操作,O2是站点S2上产生的第N2个操作,....,Ok是站点Sk上产生的第Nk个操作,定义操作O的直接因果先序向量时间戳为[(S1,N1),(S2,N2),...,(Sk,Nk)],记为DCV(O);
(3)DCH为直接因果先序历史操作表;DSC为直接因果后继计数器,是一个二维映射表,它为每个历史操作O记录着HB中直接因果依赖于它的操作数目,记为DSC(O):HB为历中操作表;是历史记录中所有有待同步的远程操作并发的操作组成的集合,初始置为空(NULL),是一个以操作序列号为索引的索引表,对于每一个历史操作O,都初始为O。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710045404.2/1.html,转载请声明来源钻瓜专利网。