一种推测嵌套软件事务存储的冲突管理方法技术

技术编号:12294906 阅读:64 留言:0更新日期:2015-11-11 06:57
本发明专利技术公开了一种推测嵌套软件事务存储的冲突管理方法,提供了在线程级推测技术上实现具有序列化提交线程的征的嵌套软件事务存储的冲突检测器和冲突消解器。冲突检测器采用读可见-懒惰冲突检测方法,冲突消解器在序列化提交线程的基础上采用基于动态优先级的随机退避冲突消解方法。本发明专利技术中的冲突检测方法很大程度上减少了事务处理中的冲突检测损耗,本发明专利技术的冲突消解方法则有效地缓解了由于仲裁策略不当而造成的冲突消解效率低下,从而提高了整个系统性能。

【技术实现步骤摘要】

本专利技术属于事务管理领域,具体涉及一种推测嵌套软件事务存储的冲突管理方 法。
技术介绍
随着计算机硬件的迅速发展,多核处理器已经广泛应用于工业设计和日常生活 中。理论上增加处理器的核数,则可执行的指令数就将有成倍的增长,但是在多核处理器上 运行现存的大量串行程序并没有获得预期加速的效果,这是由于串行程序在多核处理器上 并不能自动并行而获得加速。因此如何利用多核处理器加速已有的串行程序已经成为学术 界和工业界关注的热点研究问题。 事务存储技术和线程级推测技术成为提高串行程序在多核处理器上执行效率的 关键技术。事务存储技术有效地解决了传统并行编程模型中采用锁和信号量机制实现线程 间的同步/互斥以及对共享资源的访问所带来的死锁、优先级反转等诸多问题。线程级推 测技术打破了线程间依赖对线程并行执行的限制,可以进一步挖掘程序的并行性,有效提 高程序的可扩展性。 目前已有的支持线程级推测的事务存储技术或者不支持嵌套事务存储,或者仅仅 将嵌套事务简化为单层次的事务。嵌套事务通过允许两个事务在语义上不冲突时进行嵌 套处理来提高事务存储的性能,但是嵌套事务的引入也带来了逻辑上的复杂性和更多的冲 突。冲突不仅是事务存储技术的瓶颈,也是线程级推测技术的瓶颈,如何有效的检测冲突、 消解冲突,是提高系统性能的关键。因此,针对推测嵌套软件事务存储,设计一种冲突管理 方法是非常必需的。
技术实现思路
本专利技术的目的在于提供,以克服上述 现有技术存在的缺陷。 为达到上述目的,本专利技术采用如下技术方案: -种推测嵌套软件事务存储的冲突管理方法,包括以下步骤: 步骤1 :创建事务; 步骤2 :对所创建事务进行读操作或写操作,若进行读操作,则进入步骤3,若进行 写操作,则进入步骤5 ; 步骤3 :在读操作过程中检测是否有写后读冲突,若有,则进入步骤4,若无,则进 入步骤5 ; 步骤4:在读操作过程中对写后读冲突进行消解,并判断冲突是否消解,若是,则 进入步骤5,若否,则进入步骤9 ; 步骤5 :判断事务是否结束,若是,则进入步骤6,若否,则回到步骤2 ; 步骤6 :对事务进行提交,并检测是否有写后写冲突或读后写冲突,若有,则进入 步骤7,若无,则进入步骤8; 步骤7 :在提交过程中对写后写冲突或读后写冲突进行消解,并判断冲突是否消 解,若是,则进入步骤8 ;若否,则进入步骤9 ; 步骤8 :事务提交成功; 步骤9:放弃事务。 进一步地,步骤3及步骤6中通过冲突检测器检测是否有冲突,冲突检测器包括若 干对象,每个对象包括读集合、写集合以及写版本号,所述读集合指向对该对象存在读操作 的事务,每个事务节点包括事务ID、值和读版本号,在事务执行写操作时,需要更新读版本 号的值;所述写集合指向对该对象存在写操作的事务,每个事务写操作节点包括事务ID、 值、新值和写版本号,在事务执行写操作时,需要更新写版本号,并存入新值。 进一步地,步骤4及步骤7中通过冲突消解器对冲突进行消解,冲突消解器为每个 事务创建一个管理器节点,每个管理器节点包括优先级、开始时间、尝试次数、中止次数、父 事务ID、父事务优先级、读次数和写次数。 进一步地,步骤2中读操作包括以下步骤: 步骤2. 1 :在事务tx及事务tx祖先的写集合中查找对象s,若未找到,则进入步骤 2. 2,若找到,则进入步骤2. 4 ; 步骤2. 2 :在事务tx的读集合中查找对象s,若找至I」,则直接返回对象s的值,若未 找到,则进入步骤2. 3; 步骤2. 3 :在事务tx祖先的读集合中查找对象s,找到后将对象s及其读版本号并 入事务tx的读集合,并返回事务执行前最近一次成功提交的事务对对象s的写入值; 步骤2. 4 :判断对对象s最后与操作事务是否就是事务tx,若是,将对象s的值和 其写版本号并入事务tx的读集合,并返回事务tx中对对象S存在写操作的值;若否,则进 入步骤2. 5 ; 步骤2. 5 :判断事务tx和对对象s写操作的祖先是否为兄弟节点,若是,则存在写 后读冲突,并对冲突进行消解,若否,将对象s的值和其写版本号并入事务tx的读集合,并 返回事务tx中对对象s存在写操作的值。 进一步地,步骤6中事务提交包括以下步骤: 步骤6. 1 :判断提交全局顺序号serial是否小于事务tx的提交顺序号,若是,则 等待,若否,则进入步骤6. 2; 步骤6. 2 :检查事务tx读集合中所有对象s是否存在读后写冲突,若存在,则对冲 突进行消解并进入步骤6. 5,若不存在,则将子集合中事务的相关信息并入父集合中并进入 步骤6. 3 ; 步骤6. 3 :检查事务tx写集合中所有对象s是否存在写后写冲突,若存在,则对冲 突进行消解并进入步骤6. 5,若不存在,将事务tx中对象s的值和版本号拷贝给写集合中多 有对对象s进行过操作的事务并进入步骤6. 4 ; 步骤6.4 :清空事务tx的读集合和写集合,并使全局提交顺序号加1,然后进入步 骤 6. 5 ; 步骤6. 5:结束。 进一步地,步骤6. 2中检查事务tx读集合中所有对象s是否存在读后写冲突的方 法为:遍历对象S的读集合查找和全局写版本号相同的读版本号所对应的事务tx',若事务 tx'就是事务tx的兄弟事务的后继,则存在读后与冲突。 进一步地,步骤6. 3中检查事务tx写集合中所有对象s是否存在写后写冲突的方 法为:遍历对象s的写集合查找和全局写版本号相同的写版本号所对应的事务tx',若事务 tx'就是事务tx的兄弟事务的后继,则存在写后写冲突。 进一步地,冲突消解的方法为:将所有事务的优先级初始状态都设定为0,当事务 发生冲突时,比较事务的优先级,中止优先级小的事务,根事务的优先级=读次数+写次数 *2+时间戳,子事务的优先级=时间戳+父事务优先级+读次数+写次数*2。 进一步地,冲突消解的具体步骤如下: 1)冲突消解器初始化:分别记录事务txjP tx ^的时间戳,并初始化事务tx ;和tx 的中止次数、读次数、写次数、优先级、父事务ID和父事务优先级; 2)事务退避:若读操作打开或写操作打开失败时,则让事务随机避让,并将尝试 打开次数加1,若尝试次数大于设定阈值,则中止事务; 3)冲突消解:若事务tx.j是tx ;兄弟的后继节点时,则放弃tx .j,并将tx.j合并到tx ; 的父节点中,然后结束并销毁冲突消解器;若事务tX]不是tXl兄弟的后继节点时,则初始化 ^ 1和^]并计算其优先级,通过比较二者优先级,放弃优先级小的事务,并增加事务中止次 数,然后结束并销毁冲突消解器。 进一步地,判断冲突是否消解的情况有以下两种:一,发生冲突的两个事务中,若 一个事务是另一个事务兄弟的后继节点则该事务撤销回滚,若撤销回滚成功则冲突消解, 否则冲突未消解;二,若一个事务不是另一个事务兄弟的后继节点时则撤销并回滚两个冲 突事务中优先级低的事务,若撤销回滚成功则冲突消解,否则未消解。 与现有技术相比,本专利技术具有以下有益的技术效果: 由于采用推测执行事务需要事务串行序列化提交,本专利技术中的冲突检测方法一方 面有效的避免了线程间和线程内普通事务的WAW和RAW依赖,另一方面嵌套事务发生冲突 仅当一个事务是另一个事务的兄弟节点的后继节点时。因此,本发本文档来自技高网...
一种推测嵌套软件事务存储的冲突管理方法

【技术保护点】
一种推测嵌套软件事务存储的冲突管理方法,其特征在于,包括以下步骤:步骤1:创建事务;步骤2:对所创建事务进行读操作或写操作,若进行读操作,则进入步骤3,若进行写操作,则进入步骤5;步骤3:在读操作过程中检测是否有写后读冲突,若有,则进入步骤4,若无,则进入步骤5;步骤4:在读操作过程中对写后读冲突进行消解,并判断冲突是否消解,若是,则进入步骤5,若否,则进入步骤9;步骤5:判断事务是否结束,若是,则进入步骤6,若否,则回到步骤2;步骤6:对事务进行提交,并检测是否有写后写冲突或读后写冲突,若有,则进入步骤7,若无,则进入步骤8;步骤7:在提交过程中对写后写冲突或读后写冲突进行消解,并判断冲突是否消解,若是,则进入步骤8;若否,则进入步骤9;步骤8:事务提交成功;步骤9:放弃事务。

【技术特征摘要】

【专利技术属性】
技术研发人员:李翔王长浩张鹏伟
申请(专利权)人:陕西科技大学
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1