当前位置: 首页 > 专利查询>浙江大学专利>正文

一种基于延时策略的软件事务内存的实现方法技术

技术编号:3860167 阅读:364 留言:0更新日期:2012-04-11 18:40
一种基于延时策略的软件事务内存的实现方法,包括以下步骤: 1)事务创建 为软件事务提供四个状态:Active,Aborted,Committing和Committed,分别表示事务正在运行、事务已经终止、软件事务已经完成对对象的操作等待提交、事务已经提交成功; 在程序执行过程中碰到需要对一个对象进行读写操作时事务被创建,事务是一串连续的对同一个对象进行操作的指令集合;在事务S↓[i]中,用S↓[i]表示创建事务i时的系统时间,作为事务i的开始时间;用flag表示事务i是否有读写操作,如果有,则flag为真,如果没有,则flag为假; 2)事务冲突产生 在事务进行读写操作时,有两种情况会导致软件事务间的冲突: a.一事务进行读操作,在获取数据的过程中,发现有其他事务已经在写该数据; b.一事务进行写操作,在获取数据的过程中,发现有其他事务已经在读或写该数据; 3)事务冲突延时仲裁 在事务i和j发生冲突时,采用延迟策略进行仲裁,仲裁方式如下: a.当S↓[i]<S↓[j]或者S↓[i]=S↓[j]时,延迟策略就将J事务终止; b.当S↓[i]>S↓[j]时,延迟策略就让事务i等待一定的时间,在指定的时间T过后,去读取事务j的状态;如果事务j的状态是Committed,表明事务j已经提交了,这时冲突在没有中止任何事务的情况下得到了解决;如果事务j的状态是Active,则将事务j的标记字段flag设置为False,事务再等待相同的时间T,如果在这段时间内,事务j进行了读写操作,则将事务j的flag标记字段设置为True;在T时间过后,如果事务j的状态仍然为Active而且flag仍然为False,说明这段时间内事务j没有读写操作,这样的话,延迟策略将事务j终止;否则,事务i自己终止; 4)事务提交或者终止 事务i和j的冲突经过延迟策略仲裁以后,事务i和j中将有一个事务被终止,另外一个事务继续执行,具体情况分为两种,分别如下: a.事务i终止,则把事务i的状态置为aborted; b.事务j终止,事务i继续执行; 如果事务i又和另外一个事务k冲突,则再次进行事务冲突延时仲裁; 如果事务i读写操作已经完成,则把事务i的状态置为committing,等待提交。

【技术实现步骤摘要】

本专利技术涉及基于多处理器系统软件事物内存的实现技术,特别是涉及一种基于延时策略 的软件事务内存的实现方法。
技术介绍
在并行计算的多线程编程模型中,不可避免地会引入如何保证共享数据同步的问题。当 前,锁机制是实现对共享数据互斥访问较常用的方法。使用锁机制的过程一般是这样的程 序员首先正确地识别出算法中的并行性,然后编写代码将独立的任务分配到并行机上,通常 是一个处理器上运行一个线程。对于必须要顺序执行的任务,比如对共享资源的更新操作, 程序员必须使用同步机制来协调线程间的执行顺序。这时,程序员就使用互斥锁来创建临界 区,保证在某个时刻只允许一个线程进入访问共享资源。为了保证始终能互斥访问共享数据 结构,程序员必须使用锁来协调临界区内的数据访问。但是锁会带来很多额外的问题,使程 序设计变得复杂而费时。主要的问题有死锁、护航、优先级反转。由于这些问题的存在,基于锁的并行编程对于一般的程序员来说并不是一个很好的选 择,特别是随着多核时代的到来。同时,研究人员也在不断寻找代替锁策略的更先进、更高效的方案。其中最有前途、最 热门的当属事务内存。在事务内存模型中,程序员将多条访问共享内存的语句组成一个事务, 同基于锁的临界区一样,事务内对数据的更新从其他事务看来是瞬间发生的。但是,跟基于 锁的代码不同的是,事务内存的原子性不是通过互斥来保证的,而是通过乐观的并行执行并 在发生非线性操作时执行回滚操作的方式来保证原子性。因此,事务内存只在事务发生冲突 时使用相应的冲突仲裁策略来同步并行操作。目前,事务内存可以从硬件和软件加以实现。硬件事务内存虽然提供了良好的性能,但是却缺乏一般性。而软件事务内存通过软件的 方式实现事务内存机制,不需要额外的硬件支持,所有的机制全是通过软件实现的。软件事 务内存提供了更好的适应性和普遍性。软件事务内存可以很容易地适用于不同的任务量。同 时,软件事务内存能在增加复杂度的情况下提供对无界事务的支持,因为,软件不会受到数 据cache大小和其他片上资源的限制。
技术实现思路
本专利技术的目的在于克服现有技术中的不足,提供一种基于延时策略的软件事务内存的 实现方法。本专利技术解决其技术问题采用的技术方案如下-1) 事务创建软件事务的执行过程包括创建事务、进行读写操作、检测冲突、等待提交和提交; 本方法为软件事务提供了四个状态Active, Aborted, Committing和Committed,分别表示事务正在运行,事务已经终止,软件事务已经完成对对象的操作等待提交和事务己经提交成功;在程序执行过程中碰到需要对一个对象进行读写操作时事务被创建,事务是一串连续的 对同一个对象进行操作的指令集合;在事务Si中,用Si表示创建事务i时的系统时间,作 为事务i的开始时间;用flag表示事务i是否有读写操作,如果有,则flag为真,如果没 有,则flag为假;2) 事务冲突产生在事务进行读写操作时,有两种情况会导致软件事务间的冲突 a.—事务进行读操作,在获取数据的过程中,发现有其他事务己经在写该数据; b.—事务进行写操作,在获取数据的过程中,发现有其他事务已经在读或写该数据;3) 事务冲突延时仲裁在事务i和j发生冲突时,采用延迟策略进行仲裁,仲裁方式如下a. 当SSj或者Si :Sj时,延迟策略就将j事务终止;b. 当Si〉S」时,延迟策略就让事务i等待一定的时间,在指定的时间T过后,去读取 事务j的状态,如果事务j的状态是Committed,表明事务j已经提交了,这时冲突在没有 中止任何事务的情况下得到了解决;如果事务j的状态是Active,则将事务j的标记字段 flag设置为False,事务再等待相同的时间T,如果在这段时间内,事务j进行了读写操作, 则将事务j的flag标记字段设置为True,在T时间过后,如果事务j的状态仍然为Active 而且flag仍然为False,说明这段时间内事务j没有读写操作,这样的话,延迟策略将事 务j终止;否则,事务i自己终止;4) 事务提交或者终止事务i和j的冲突经过延迟策略仲裁以后,事务i和j中将有一个事务被终止,另外一 个事务继续执行,具体情况分为两种,分别如下-a. 事务i终止,则把事务i的状态置为aborted;b. 事务j终止,事务i继续执行;如果事务i又和另外一个事务k冲突,则再次进行事务冲突延时仲裁;如果事务i读写操作已经完成,则把事务i的状态置为committing,等待提交; 本专利技术与
技术介绍
相比,具有的有益的效果是-本专利技术采用延时策略来仲裁事务间发生冲突时的情况。这样的冲突仲裁策略简单高效, 有效地缓解了由于仲裁策略不当而造成的效率低下,提高了软件事物内存系统的性能。附图说明图1是软件事务的执行过程示意图; 图2是软件事务的状态转化示意图; 图3是冲突事务的实例示意图4是当Si 〈Sj或者Si zSj时延时策略的示意图; 图5是当Si 〉Sj时延时策略的示意图。具体实施例方式在实施基于延时策略的软件事务内存的实现方法时,具体方式如下1) 事务创建软件事务的执行过程包括创建事务、进行读写操作、检测冲突、等待提交和提交,整 个过程如图l所示;本方法为软件事务提供了四个状态Active, Aborted, Committing和Committed,分 别表示事务正在运行,事务已经终止,软件事务己经完成对对象的操作等待提交和事务已经 提交成功,如图2所示;在程序执行过程中碰到需要对一个对象进行读写操作时事务被创建,事务是一串连续的 对同一个对象进行操作的指令集合;在事务i中,用j表示创建事务i时的系统时间,作为 事务i的开始时间;用flag表示事务i是否有读写操作,如果有,则flag为真,如果没有, 则flag为假;以Java程序为例,在对链表List进行操作时产生两个事务,事务1和事务2(如图3 所示)。事务2先于事务1创建,即S1〉S2,事务1和事务2的flag字段的初始值都为假, 表示事务开始时都还未进行读写操作。等待时间T设置为lms。2) 事务冲突产生在事务进行读写操作时,有两种情况会导致软件事务间的冲突-a. 本事务进行读操作,在获取数据的过程中,发现有其他事务己经在写该数据;b. 本事务进行写操作,在获取数据的过程中,发现有其他事务已经在读或写该数据。 以事务1和事务2为例,事务1和事务2开始各自运行,事务2对ListList, find(c)读操作,把事务2的flag字段置为True,当事务1试图对链表List进行 List, insert (a)操作时发现事务2已经对链表List进行了读操作,这时就产生了冲突。 3)事务冲突延时仲裁在事务i和j发生冲突时,采用延迟策略进行仲裁,仲裁方式如下a. 当Si〈Sj或者Si二Sj时,延迟策略就将与j事务终止,如图4所示;b. 当Si〉Sj时,延迟策略就让事务i等待一定的时间,在指定的时间T过后,去读取 事务j的状态,如果事务j的状态是Committed,表明事务j已经提交了,这时冲突在没有 中止任何事务的情况下得到了解决;如果事务j的状态是Active,则将事务j的标记字段 flag设置为False,事务再等待相同的时间T,如果在这段时间内,事务j进行了读写操 作,则将事务j的fl本文档来自技高网
...

【技术保护点】
一种基于延时策略的软件事务内存的实现方法,包括以下步骤: 1)事务创建 为软件事务提供四个状态:Active,Aborted,Committing和Committed,分别表示事务正在运行、事务已经终止、软件事务已经完成对对象的操作等待提交、事务已经提交成功; 在程序执行过程中碰到需要对一个对象进行读写操作时事务被创建,事务是一串连续的对同一个对象进行操作的指令集合;在事务S↓[i]中,用S↓[i]表示创建事务i时的系统时间,作为事务i的开始时间;用flag表示事务i是否有读写操作,如果有,则flag为真,如果没有,则flag为假; 2)事务冲突产生 在事务进行读写操作时,有两种情况会导致软件事务间的冲突: a.一事务进行读操作,在获取数据的过程中,发现有其他事务已经在写该数据; b.一事务进行写操作,在获取数据的过程中,发现有其他事务已经在读或写该数据; 3)事务冲突延时仲裁 在事务i和j发生冲突时,采用延迟策略进行仲裁,仲裁方式如下: a.当S↓[i]<S↓[j]或者S↓[i]=S↓[j]时,延迟策略就将J事务终止; b.当S↓[i]>S↓[j]时,延迟策略就让事务i等待一定的时间,在指定的时间T过后,去读取事务j的状态;如果事务j的状态是Committed,表明事务j已经提交了,这时冲突在没有中止任何事务的情况下得到了解决;如果事务j的状态是Active,则将事务j的标记字段flag设置为False,事务再等待相同的时间T,如果在这段时间内,事务j进行了读写操作,则将事务j的flag标记字段设置为True;在T时间过后,如果事务j的状态仍然为Active而且flag仍然为False,说明这段时间内事务j没有读写操作,这样的话,延迟策略将事务j终止;否则,事务i自己终止; 4)事务提交或者终止 事务i和j的冲突经过延迟策略仲裁以后,事务i和j中将有一个事务被终止,另外一个事务继续执行,具体情况分为两种,分别如下: a.事务i终止,则把事务i的状态置为aborted; b.事务j终止,事务i继续执行; 如果事务i又和另外一个事务k冲突,则再次进行事务冲突延时仲裁; 如果事务i读写操作已经完成,则把事务i的状态置为committing,等待提交。...

【技术特征摘要】
1. 一种基于延时策略的软件事务内存的实现方法,包括以下步骤1)事务创建为软件事务提供四个状态Active,Aborted,Committing和Committed,分别表示事务正在运行、事务已经终止、软件事务已经完成对对象的操作等待提交、事务已经提交成功;在程序执行过程中碰到需要对一个对象进行读写操作时事务被创建,事务是一串连续的对同一个对象进行操作的指令集合;在事务Si中,用Si表示创建事务i时的系统时间,作为事务i的开始时间;用flag表示事务i是否有读写操作,如果有,则flag为真,如果没有,则flag为假;2)事务冲突产生在事务进行读写操作时,有两种情况会导致软件事务间的冲突a. 一事务进行读操作,在获取数据的过程中,发现有其他事务已经在写该数据;b. 一事务进行写操作,在获取数据的过程中,发现有其他事务已经在读或写该数据;3)事务冲突延时仲裁在事务i和j发生冲突时,采用延迟策略进行仲裁,仲裁方式如下a. 当Si<Sj或者Si=Sj时,延迟策略就将j事务终止;b. 当Si>...

【专利技术属性】
技术研发人员:陈天洲马建良曹满乔福明章铁飞项凌翔王春昊刘敬伟陈剑缪良华
申请(专利权)人:浙江大学
类型:发明
国别省市:86

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

1