CN101535950B - 用于事务应用排序和争用管理的方法和系统 - Google Patents
用于事务应用排序和争用管理的方法和系统 Download PDFInfo
- Publication number
- CN101535950B CN101535950B CN2007800428099A CN200780042809A CN101535950B CN 101535950 B CN101535950 B CN 101535950B CN 2007800428099 A CN2007800428099 A CN 2007800428099A CN 200780042809 A CN200780042809 A CN 200780042809A CN 101535950 B CN101535950 B CN 101535950B
- Authority
- CN
- China
- Prior art keywords
- affairs
- transaction
- submission
- commit order
- order
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Advance Control (AREA)
Abstract
公开了用于对软件事务存储系统中的事务应用排序的各种技术和方法。软件事务存储系统具备允许为多个事务指定预定提交次序的特征。在运行时使用该预定提交次序来帮助确定提交软件事务存储系统中的事务的次序。当在第一事务和第二事务之间发生冲突时调用争用管理过程。在争用管理过程中使用预定提交次序来帮助确定是该第一事务还是该第二事务应赢得冲突并被允许继续。
Description
背景
软件事务存储器(STM)是类似于数据库事务的、用于在并发计算中控制对共享存储器的访问的并发控制机制。事务存储器的上下文中的事务是执行对共享存储器的一系列读取和写入的代码片段。STM用作对传统锁定机制的替换。程序员在代码块周围放置声明性注释(例如,原子的)以指示这些代码需要的安全特性,并且系统自动保证该块相对于其他受保护的代码区域原子地执行。软件事务存储器编程模型防止了基于锁的优先级倒置和死锁问题。
虽然典型的STM系统具有许多优点,但它们仍然需要程序员仔细地避免非预期的存储器访问排序。例如,在典型的STM环境中提交事务(即,提交处理)的次序是不受约束的。事务彼此竞争提交,这意味着无论事务1在事务2之前还是之后提交通常都是程序的动态调度的产物(并且通常也由程序专用逻辑来调度)。此外,如果两个事务冲突,诸如通过试图向同一存储器片段写入等,则它们的提交次序可基于许多可能的争用管理策略中的一个来任意决定。在这两种情况下,不保证任何特定提交次序;因此确保程序员的程序按任一次序都正确地运作的负担就落在程序员身上。这使得并行编程非常困难。
简化并行编程的一种方法是以保证程序语义不变的方式来自动并行化顺序程序。换言之,如果顺序程序正确地运作,则并行化的版本也正确地运作。该并行化顺序程序的概念的两个(单独的)变型已分别被称为安全前景(safefutures)和投机循环并行化(speculative loop parallelization)。在安全前景中,程序的顺序版本可执行“A;B”(即,先执行A再执行B)。程序员可添加注释(“前景”),其指示他或她认为有可能并行地执行A和B而不改变程序语义(即,A不读取B读取的任何存储器位置,反之亦然)。但是系统将该注释严格地作为必须检查其有效性的“提示”来处理。系统将A和B作为事务来执行,并且如果它们冲突,则在B将在A之前串行化的情况下阻止B提交。这是上述未定提交次序的“不合乎需要”的方面。
投机循环并行化是类似的想法,其中在顺序程序中执行的动作是循环的连 续迭代。程序员(或某一静态分析)指示并行地执行循环可能是有利的,并且系统将该循环的每一个迭代作为并行事务来运行,这需要这些事务以迭代在原始程序中的提交次序来提交。
概述
公开了用于对软件事务存储系统中的事务应用排序的各种技术和方法。软件事务存储系统具备允许为多个事务指定预定提交次序的特征。在运行时使用该预定提交次序来帮助确定提交软件事务存储系统中的事务的次序。在一个实现中,预定提交次序可以或者是总体排序或者是部分排序。在总体排序的情况下,事务被迫以线性次序来提交。在部分排序的情况下,事务被允许以多个可接受次序中的一个来提交。在一个实现中,提交仲裁者跟踪表示应被允许下一个提交的事务的下一个提交(net-to-commit)值,并且当特定事务准备好提交时,该事务在其提交序号匹配提交仲裁者的下一个提交值的情况下被允许这样做。
当在第一事务和第二事务之间发生冲突时调用争用管理过程。在争用管理过程中使用预定提交次序来帮助确定是该第一事务还是该第二事务应赢得冲突并被允许继续。
提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。该概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
附图简述
图1是一个实现的计算机系统的图示。
图2是在图1的计算机系统上操作的一个实现的软件事务存储应用程序的图解视图。
图3是图1的系统的一个实现的高级处理流程图。
图4是图1的系统的一个实现的处理流程图,其示出在使用提交仲裁者来强制实施预定提交次序时所涉及的各阶段。
图5是图1的系统的一个实现的处理流程图,其示出在使用提交仲裁者来 强制实施对多个事务的总体排序时所涉及的各阶段。
图6是图1的系统的一个实现的处理流程图,其示出在使用提交仲裁者来强制实施对多个事务的部分排序时所涉及的各阶段。
图7是图1的系统的一个实现的处理流程图,其示出在提供使用预定提交次序信息来管理冲突的争用管理过程时所涉及的各阶段。
图8是图1的系统的一个实现的处理流程图,其示出在提供使用预定提交次序信息来管理关于嵌套事务的冲突的争用管理过程时所涉及的各阶段。
图9是示出顶层先辈具有公共先辈的示例性先辈树的逻辑图。
图10是示出顶层先辈不具有公共先辈的示例性先辈树的逻辑图。
图11是图1的系统的一个实现的处理流程图,其示出在通过在软件事务存储系统中使用提交仲裁者来减少浪费的工作量时所涉及的各阶段。
图12是图1的系统的一个实现的处理流程图,其示出在争用管理过程中分析整个先辈链以确定适当的冲突解决时所涉及的各阶段。
详细描述
为促进对本发明的原理的理解,现将对图中所示的各实施方式加以参考,同时也将用具体语言描述它们。不过,需要理解的是,并无意由此作范围上的限制。在所述实施方式中的任何改变和进一步更改,以及在此所述的原理的进一步应用都可以预期将是本领域技术人员通常能想到的。
该系统可以一般上下文中被描述为软件事务存储系统,但是该系统还用于除此之外的其它目的。在一个实现中,此处所描述的一个或多个技术可被实现为诸如MICROSOFT .NET Framework等框架程序内、或来自为开发者提供开发软件应用程序的平台任何其他类型的次序或服务的特征。在另一实现中,此处所描述的一个或多个技术被实现为处理开发在并发环境中执行的应用程序的其它应用程序的特征。
在软件事务存储系统中提供允许为多个事务指定预定提交次序的特征。该预定提交次序用于帮助确定提交事务的次序。在一个实现中,当在第一事务和第二事务之间发生冲突时调用争用管理过程。然后在争用管理过程中使用该预定提交次序来帮助确定是该第一事务还是该第二事务应赢得冲突并被允 许继续。
如图1所示,用于实现该系统的一个或多个部分的示例性计算机系统包括诸如计算设备100等计算设备。在其最基本的配置中,计算设备100通常包括至少一个处理单元102和系统存储器104。取决于计算设备的确切配置和类型,存储器104可以是易失性的(如RAM)、非易失性的(如ROM、闪存等)或是两者的某种组合。该最基本配置在图1中由虚线106来例示。
另外,设备100还可具有附加的特征/功能。例如,设备100还可包含额外的存储(可移动和/或不可移动),其中包括但不限于磁盘、光盘或磁带。这样的附加存储在图1中由可移动存储108和不可移动存储110示出。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。存储器104、可移动存储108和不可移动存储110都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或者可用于存储所需信息并且可由设备100访问的任何其它介质。任何这样的计算机存储介质都可以是设备100的一部分。
计算设备100包括允许计算设备100与其它计算机/应用程序115进行通信的一个或多个通信连接114。设备100也可以具有诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等输入设备112。也可以包括诸如显示器、扬声器、打印机等输出设备111。这些设备在本领域中公知且无需在此处详细讨论。在一实现中,计算设备100包括软件事务存储应用程序200。软件事务存储应用程序200将在图2中更详细地描述。
现在转向图2,并继续参考图1,示出了在计算设备100上操作的软件事务存储应用程序200。软件事务存储应用程序200是驻留在计算设备100上的应用程序中的一个。然而,可以理解,软件事务存储应用程序200可另选地或另外地被具体化为一个或多个计算机上的计算机可执行指令和/或与图1所示的不同的变型。另选地或另外地,软件事务存储应用程序200的一个或多个部分可以是系统存储器104的一部分、可以在其它计算机和/或应用程序115上、或可以是计算机软件领域的技术人员能想到的其它此类变型。
软件事务存储应用程序200包括程序逻辑204,其负责执行在此描述的技术中的某一些或全部。程序逻辑204包括用于提供软件事务存储器(STM)系统的逻辑206;用于提供允许为STM系统中的多个事务静态或动态地指定预定提交次序的提交仲裁者的逻辑208;用于允许提交仲裁者在运行时使用预定提交次序来帮助确定提交软件事务存储系统中的多个事务的次序的逻辑210;用于提供当在第一事务和第二事务之间发生冲突时调用的争用管理过程的逻辑212;用于在争用管理过程中使用预定提交次序来帮助确定是该第一事务还是该第二事务应赢得冲突并被允许继续(例如,取决于同一事务组中的两个事务中的哪个事务具有较低提交序号)的逻辑214;用于允许提交仲裁者可用于使用预定提交排序来跟踪一个或多个排序值(例如,在总体排序中,表示多个事务中应被允许提交的下一事务的下一个提交字段)以及用于将该一个或多个排序值与给定事务的特定提交序号进行比较以查看该给定事务的提交是否是适当的(给定应强制实施的排序)的逻辑216;以及用于操作应用程序的其他逻辑220。在一个实现中,程序逻辑204可用于通过编程,如使用对程序逻辑204中的一个过程的单一调用而从另一程序调用。
现在转向图3-10,并继续参考图1-2,更详细地描述了用于实现软件事务存储应用程序200的一个或多个实现的各阶段。图3是软件事务存储应用程序200的高级处理流程图。在一种形式中,图3的过程至少部分地在计算设备100的操作逻辑中实现。该过程在起始点240处开始,在那里提供软件事务存储系统(阶段242)。提供允许为多个事务指定预定提交次序(例如,总体排序或部分排序)(例如,动态或静态地分配)的特征(阶段244)。此处所使用的术语“预定提交次序”旨在包括在事务开始运行之前的任何时刻所确定的特定相关事务组应被提交的特定次序。此处所使用的术语事务“组”包括由同一个提交仲裁者管理的特定的一组(例如,多个)事务,以及这些事务的嵌套子事务。
在运行时使用预定提交次序来帮助确定提交软件事务存储系统中的多个事务的次序(阶段246)。使用预定提交次序来帮助解决在多个事务中的两个或多个之间发生的冲突(阶段248)。该过程在结束点250处结束。
图4示出了在使用提交仲裁者来强制实施预定提交次序时所涉及的各阶 段的一个实现。在一种形式中,图4的过程至少部分地在计算设备100的操作逻辑中实现。该过程在起始点270处开始,在那里为软件事务存储系统提供一个或多个提交仲裁者,该提交仲裁者可用于允许为多个事务指定预定提交次序(阶段272)。此处所使用的术语“提交仲裁者”旨在包括负责管理应相对于彼此排序的一个或多个事务组的任何类型的程序、特征或进程。在一个实现中,在任何给定时刻可能存在在程序中活动的一个或多个提交仲裁者。例如,可创建如所需要的那样多的提交仲裁者以管理不同的事务组。提交仲裁者跟踪并更新用于确定事务相对于彼此的适当的排序的一个或多个排序值(阶段274)。在总体排序的情况下,可使用下一个提交字段来表示多个事务中应被下一个提交的下一事务(阶段274)。在部分排序的情况下,使用排序值来跟踪不同的可能次序的有向图。在适当时,提交仲裁者使用预定提交次序来为多个事务中的每一个提供提交序号(阶段276)。
当多个事务中的一特定事务准备提交时,如果该特定事务的提交序号在与一个或多个排序值进行比较时揭示该提交是适当的,则提交仲裁者允许该事务提交(阶段278)。在总体排序的情况下,该情况在下一个提交字段和该特定事务的提交序号具有相同的值时发生。在这种情况下,提交仲裁者允许该事务提交并且然后在提交成功的情况下将下一个提交字段递增至序列中的下一个数字(例如,下一个较高的数字)(阶段278)。当该多个事务中的特定事务准备提交时,如果该特定事务的提交序号在与排序值进行比较时揭示该提交不是适当的,则将该特定事务置于挂起模式中直到其在前导事务提交后的稍后时刻被唤醒(阶段280)。在总体排序的情况下,当下一个提交字段和该特定事务的序号不具有相同的值时进入该挂起模式。
在一个实现中,系统可在一事务的直接前导者已提交后唤醒该事务,在这种情况下该事务试图立即提交。或者,系统可选择在某一非直接前导者已提交后唤醒一事务,即使该事务的直接前导者可能尚未提交。在被唤醒之后,系统检查以查看对于该事务而言真正提交是否适当。如果是,则提交该事务。该过程在结束点282处结束。
图5示出了在使用提交仲裁者来强制实施对多个事务的总体排序时所涉及的各阶段的一个实现。在一种形式中,图5的过程至少部分地在计算设备100 的操作逻辑中实现。该过程在起始点290处开始,在那里提供可用于允许为多个事务指定预定总体排序的一个或多个提交仲裁者(例如,指定应提交多个事务的确切次序的提交仲裁者)(阶段292)。当多个事务中的一特定事务到达其提交点,为了强制实施提交次序,将该特定事务的提交次序与提交仲裁者的下一个提交字段进行比较(阶段296)。在一个实现中,如果系统确定总体排序的强制实施不是必要的(例如,诸如因为肯定不存在冲突),则可在适当时违反总体排序要求(阶段294),然后该过程在结束点302处结束。
如果将要实施提交排序,并且如果该特定事务的提交次序具有与提交仲裁者的下一个提交字段相同的值(判定点296),则提交该特定事务,并且如果提交成功,则递增该下一个提交字段并唤醒下一后继者(如果有的话)(阶段298)。如果该特定事务的提交次序不具有与提交仲裁者的下一个提交字段相同的值(判定点296),则将该特定事务置于挂起/休眠模式中直到其在前导事务提交后的稍后时刻被唤醒(阶段300)。在一个实现中,在稍后时刻,如果与前导者发生冲突,则可要求该特定事务中止并回退以使得前导者可向前进。否则,如果未发生这样的冲突,则一旦满足此处所描述的提交次序要求,该特定事务就应能够提交。该过程在结束点302处结束。
图6示出了在使用提交仲裁者来强制实施对多个事务的部分排序时所涉及的各阶段的一个实现。在一种形式中,图6的过程至少部分地在计算设备100的操作逻辑中实现。该过程在起始点310处开始,在那里提供可用于允许为多个事务指定预定部分排序的一个或多个提交仲裁者(例如,指定应提交多个事务的多个可接受次序(例如,以有向图的形式)的提交仲裁者)(阶段312)。当该多个事务中的一特定事务到达其提交点时,为了强制实施提交次序,向前导事务的状态(例如,一个或多个排序值)咨询特定提交事务(例如,由提交仲裁者来跟踪的)(阶段314)。如果该特定事务的所有前导者都已提交(判定点316),则提交该特定事务(阶段318)。如果提交成功,则在适当时更新由提交仲裁者跟踪的一个或多个值,并且唤醒所有可能的下一后继者(如果有的话)(阶段318)。
如果该特定事务的所有前导者尚未提交(判定点316),则将该特定事务置于挂起/休眠模式中直到其在前导事务提交后的稍后时刻被唤醒(阶段320)。 该过程在结束点322处结束。
图7示出了在提供使用预定提交次序信息来管理冲突的争用管理过程时所涉及的各阶段的一个实现。在一种形式中,图7的过程至少部分地在计算设备100的操作逻辑中实现。该过程在起始点340处开始,在那里提供支持用于一个或多个事务组的预定提交次序的软件事务存储系统(阶段342)。提供当在第一事务和第二事务之间发生冲突时调用的争用管理过程(阶段344)。在争用管理过程中使用预定提交次序来帮助确定是该第一事务还是该第二事务应赢得冲突并被允许继续(阶段346)。如果第一事务和第二事务不是同一事务组的一部分(判定点348),则在这两个事务之间不强制实施预定提交次序(因为不存在冲突)(阶段350)。在这种情况下,因为这两个事务不在同一事务组中,所以不使用排序因素来帮助解决冲突(阶段350)。
如果第一事务和第二事务是同一事务组的一部分(判定点348),则系统将该第一事务的第一序号与该第二事务的第二序号进行比较(阶段352)。允许具有较低序号的事务继续(或用另一合适的优先级排序)(阶段354)。该过程在结束点356处结束。
图8示出了在提供使用预定提交次序信息来管理关于嵌套事务的冲突的争用管理过程时所涉及的各阶段的一个实现。在一种形式中,图8的过程至少部分地在计算设备100的操作逻辑中实现。在一个实现中,在提交特定事务之前对于每一个事务考虑整个先辈链,使得强制实施存在于该链中的任何排序。该过程在起始点370处开始,在那里提供当在第一事务和第二事务之间发生冲突时调用的争用管理过程(阶段372)。在争用管理过程中使用预定提交次序来帮助确定是该第一事务还是该第二事务应赢得冲突并被允许继续(阶段374)。如果该第一和第二事务不是同一事务组的一部分(判定点376),则在这两个事务之间不强制实施预定提交程序(因为不存在冲突)(阶段378)并且该过程在结束点388处结束。如果该第一和第二事务是同一事务组的一部分(判定点376),则系统检查以查看是否涉及嵌套事务(判定点380)。
如果不涉及嵌套事务(判定点380),则将该第一事务的序号(或其他排序指示符)与该第二事务的序号(或其他排序指示符)进行比较(阶段384)。允许具有较低序号的事务继续(或者通过使用其他合适的排序准则被确定为按 次序的下一个的事务)(阶段386)。
如果涉及嵌套事务(判定点380),则将该第一事务的顶层先辈的序号(或其他排序指示符)与该第二事务的顶层先辈的序号(或其他排序指示符)进行比较(阶段382)。此处所使用的术语“顶层先辈”在涉及公共先辈的情况下旨在包括公共先辈的直接子事务,而在不涉及公共先辈的情况下旨在包括每一个事务的顶层先辈。涉及公共和非公共先辈的这些情况在图9和10中更详细地示出。允许具有较低序号的事务继续(例如,与具有较低序号的先辈相关的事务或其他合适的准则)(阶段386)。该过程在结束点388处结束。
图9是示出顶层先辈具有公共先辈的示例性先辈树的逻辑图。在所示示例中,事务A是D和E的公共先辈。当在D和E之间发生冲突时,分析事务B和C(公共先辈A的直接子事务)的序号以确定哪个事务,即,是D还是E应被允许继续(图8中的阶段382)。
图10是示出顶层先辈不具有公共先辈的示例性先辈树的逻辑图。在所示示例中,事务A是事务C的先辈。事务D是事务F的先辈。当在事务C和F之间发生冲突时,则将事务A和D(各自的顶层先辈)的序号进行比较以确定哪个事务,即,是C还是F应被允许继续(图8中的阶段382)。
图11示出了在通过使用软件事务存储系统中的提交仲裁者来减少浪费的工作量时所涉及的各阶段的一个实现。在一种形式中,图11的过程至少部分地在计算设备100的操作逻辑中实现。该过程在起始点400处开始,在那里为软件事务存储系统提供一个或多个提交仲裁者,该提交仲裁者可用于允许为多个事务指定预定提交次序(阶段402)。提交仲裁者可用于将事务置于休眠/挂起模式中以便在前导事务仍在执行时阻塞该事务重新执行(例如,通过分析预定提交次序以确定适当的次序)(阶段404)。提交仲裁者还可用于一旦前导事务完成就唤醒被置于挂起模式的事务(例如,通过再次分析预定提交次序以确定适当的次序)(阶段406)。通过提供这些阻塞和唤醒机制,提交仲裁者帮助减少由于阻止将在稍后不得不撤销的操作执行而浪费的工作量(阶段408)。该过程在结束点410处结束。
图12示出了在争用管理过程中分析整个先辈链以确定适当的冲突解决时所涉及的各阶段的一个实现。在一种形式中,图12的过程至少部分地在计算 设备100的操作逻辑中实现。该过程在起始点430处开始,在那里提供当在第一事务和第二事务之间发生冲突时调用的争用管理过程(阶段432)。在争用管理过程中使用预定提交次序来帮助确定是该第一事务还是该第二事务应赢得冲突并被允许继续(阶段434)。分析预定提交次序的整个先辈链以帮助确定适当的冲突管理(阶段436)。例如,如果存在四个事务,两个父事务和两个子事务,其中B嵌套在A中而D嵌套在C中。假设在A和C之间存在A应在C之前提交的排序关系。如果B和D冲突,则争用管理过程应偏爱B,因为在给定A必须在C之前提交的情况下偏爱D是无用的(阶段436)。该过程在结束点438处结束。
尽管此处所讨论的各示例探讨了使用各种技术和方法来强制实施提交排序,但应当注意,事务可能根本不具有提交仲裁者。在事务不具有提交仲裁者的情况下,普通的无序提交将会发生。
尽管用对结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。落入在此所述和/或所附权利要求所描述的实现的精神的范围内的所有等效方案、更改和修正都期望受到保护。
例如,计算机软件领域普通技术人员会认识到在此讨论的示例中所述的客户机和/或服务器布置、用户界面屏幕内容、和/或数据布局可在一台或多台计算机上不同地组织,以包括比示例中所描绘的更少或更多的选项或特征。
Claims (17)
1.一种用于对软件事务存储系统中的事务应用排序的方法,所述方法包括以下步骤:
提供软件事务存储系统(242);
提供允许为多个事务指定预定提交次序的特征(244);以及
在运行时使用所述预定提交次序来帮助确定提交所述软件事务存储系统中的多个事务的次序(246),
其中,提供了一种跟踪表示所述多个事务中应被下一个提交的下一事务的下一个提交字段的提交仲裁者(274)。
2.如权利要求1所述的方法,其特征在于,还包括:
使用所述预定提交次序来帮助解决在所述多个事务中的两个或多个之间发生的冲突(248)。
3.如权利要求1所述的方法,其特征在于,所述预定提交次序包括所述多个事务的预定总体排序(244)。
4.如权利要求1所述的方法,其特征在于,所述预定提交次序包括所述多个事务的预定部分排序(244)。
5.如权利要求1所述的方法,其特征在于,提供了一种跟踪所述预定提交次序的一个或多个排序值的提交仲裁者(272)。
6.如权利要求5所述的方法,其特征在于,当所述多个事务中的特定事务准备提交时,将所述一个或多个排序值与所述特定事务的排序值进行比较以确定所述特定事务是否能够提交(278)。
7.如权利要求1所述的方法,其特征在于,所述预定提交次序是动态分配的(244)。
8.如权利要求1所述的方法,其特征在于,所述预定提交次序是静态分配的(244)。
9.如权利要求1所述的方法,其特征在于,为所述多个事务中的每一个提供提交序号(276)。
10.如权利要求9所述的方法,其特征在于,当所述多个事务中的特定事务准备提交时,确定所述特定事务的提交序号是否具有与由所述提交仲裁者跟踪的下一个提交字段相同的值(278)。
11.如权利要求10所述的方法,其特征在于,如果所述特定事务的提交序号和所述下一个提交字段具有所述相同的值,则允许所述提交继续(278)。
12.如权利要求11所述的方法,其特征在于,在所述提交继续并成功之后,所述提交仲裁者将所述下一个提交字段递增至序列中的下一个数字(278)。
13.如权利要求10所述的方法,其特征在于,如果所述特定事务的提交序号和所述下一个提交字段不具有所述相同的值,则将所述特定事务置于挂起模式中直到其在前导事务提交后的稍后时刻被唤醒(280)。
14.一种用于对软件事务存储系统中的事务应用排序的系统,所述系统包括:
用于提供软件事务存储系统(242)的装置;
用于提供允许为多个事务指定预定提交次序的特征(244)的装置;
用于在运行时使用所述预定提交次序来帮助确定提交所述软件事务存储系统中的多个事务的次序(246)的装置;以及
用于提供一种跟踪表示所述多个事务中应被允许提交的下一事务的下一个提交字段的提交仲裁者(274)的装置。
15.一种用于提供对于排序的争用管理的方法,所述方法包括以下步骤:
提供支持用于一个或多个事务组的预定提交次序的软件事务存储系统(206,342);
提供允许为所述一个或多个事务组指定预定提交次序的提交仲裁者(208);
提供当在第一事务和第二事务之间出现冲突时调用的争用管理过程(212,344);以及
在所述争用管理过程中使用所述预定提交次序来帮助确定是所述第一事务还是所述第二事务应赢得所述冲突并被允许继续(214,346),
其中,如果所述争用管理过程确定所述第一事务和所述第二事务是同一事务组的一部分(348),则将表示所述第一事务的第一序号字段和表示所述第二事务的第二序号字段进行比较(352),并且所述第一事务和所述第二事务中具有较低相应序号的特定事务被允许继续(354)。
16.一种用于提供对于排序的争用管理的系统,所述系统包括:
用于提供支持用于一个或多个事务组的预定提交次序的软件事务存储系统(206,342)的装置;
用于提供允许为所述一个或多个事务组指定预定提交次序的提交仲裁者的装置(208);
用于提供当在第一事务和第二事务之间出现冲突时调用的争用管理过程(212,344)的装置;以及
用于在所述争用管理过程中使用所述预定提交次序来帮助确定是所述第一事务还是所述第二事务应赢得所述冲突并被允许继续(214,346)的装置,
其中,如果所述争用管理过程确定所述第一事务和所述第二事务是同一事务组的一部分(348),则将表示所述第一事务的第一序号字段和表示所述第二事务的第二序号字段进行比较(352),并且所述第一事务和所述第二事务中具有较低相应序号的特定事务被允许继续(354)。
17.一种用于提供对于排序的争用管理的方法,所述方法包括:
提供软件事务存储系统(206);
提供允许为多个事务指定预定提交次序的提交仲裁者(208),所述提交仲裁者可用于在运行时使用所述预定提交次序来帮助确定提交所述软件事务存储系统中的多个事务的次序(210);
提供当在第一事务和第二事务之间出现冲突时调用的争用管理过程(212);以及
在所述争用管理过程中使用所述预定提交次序来帮助确定是所述第一事务还是所述第二事务应赢得所述冲突并被允许继续(214),
其中,所述提交仲裁者可用于在嵌套事务中强制实施提交排序(380)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/601,541 US7711678B2 (en) | 2006-11-17 | 2006-11-17 | Software transaction commit order and conflict management |
US11/601,541 | 2006-11-17 | ||
PCT/US2007/085035 WO2008064139A1 (en) | 2006-11-17 | 2007-11-17 | Software transaction commit order and conflict management |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101535950A CN101535950A (zh) | 2009-09-16 |
CN101535950B true CN101535950B (zh) | 2012-06-20 |
Family
ID=39418139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800428099A Active CN101535950B (zh) | 2006-11-17 | 2007-11-17 | 用于事务应用排序和争用管理的方法和系统 |
Country Status (10)
Country | Link |
---|---|
US (1) | US7711678B2 (zh) |
EP (1) | EP2095225B1 (zh) |
JP (1) | JP4698757B2 (zh) |
KR (1) | KR101443930B1 (zh) |
CN (1) | CN101535950B (zh) |
BR (1) | BRPI0718463A2 (zh) |
CA (1) | CA2664041A1 (zh) |
RU (1) | RU2439663C2 (zh) |
TW (1) | TWI424313B (zh) |
WO (1) | WO2008064139A1 (zh) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8739163B2 (en) * | 2008-03-11 | 2014-05-27 | University Of Washington | Critical path deterministic execution of multithreaded applications in a transactional memory system |
WO2009076654A1 (en) * | 2007-12-12 | 2009-06-18 | University Of Washington | Deterministic multiprocessing |
US9170844B2 (en) * | 2009-01-02 | 2015-10-27 | International Business Machines Corporation | Prioritization for conflict arbitration in transactional memory management |
US8266604B2 (en) * | 2009-01-26 | 2012-09-11 | Microsoft Corporation | Transactional memory compatibility management |
US8627292B2 (en) * | 2009-02-13 | 2014-01-07 | Microsoft Corporation | STM with global version overflow handling |
US9569254B2 (en) * | 2009-07-28 | 2017-02-14 | International Business Machines Corporation | Automatic checkpointing and partial rollback in software transaction memory |
US9639392B2 (en) * | 2013-12-17 | 2017-05-02 | Intel Corporation | Unbounded transactional memory with forward progress guarantees using a hardware global lock |
US8453120B2 (en) | 2010-05-11 | 2013-05-28 | F5 Networks, Inc. | Enhanced reliability using deterministic multiprocessing-based synchronized replication |
US8327185B1 (en) | 2012-03-23 | 2012-12-04 | DSSD, Inc. | Method and system for multi-dimensional raid |
US9870384B2 (en) | 2012-03-30 | 2018-01-16 | International Business Machines Corporation | Database system transaction management |
WO2014076604A1 (en) * | 2012-11-13 | 2014-05-22 | Koninklijke Philips N.V. | Method and apparatus for managing a transaction right |
JP6021112B2 (ja) * | 2013-11-28 | 2016-11-02 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 複数のスレッドで順序付きトランザクションを実行する方法、並びに、当該トランザクションを実行するためのコンピュータ及びそのコンピュータ・プログラム |
CN103914300B (zh) * | 2014-03-24 | 2017-04-05 | 深圳天珑无线科技有限公司 | 一种软件开发事务的实现方法及电子设备 |
US20150278123A1 (en) * | 2014-03-28 | 2015-10-01 | Alex Nayshtut | Low-overhead detection of unauthorized memory modification using transactional memory |
US10303525B2 (en) * | 2014-12-24 | 2019-05-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10540524B2 (en) | 2014-12-31 | 2020-01-21 | Mcafee, Llc | Memory access protection using processor transactional memory support |
EP3232320A4 (en) * | 2014-12-31 | 2018-01-24 | Huawei Technologies Co. Ltd. | Transaction conflict detection method and apparatus and computer system |
CN105045563B (zh) * | 2015-06-19 | 2017-10-10 | 陕西科技大学 | 一种推测嵌套软件事务存储的冲突管理方法 |
US10180921B2 (en) | 2015-06-26 | 2019-01-15 | International Business Machines Corporation | Non-interfering transactions |
US10318430B2 (en) | 2015-06-26 | 2019-06-11 | International Business Machines Corporation | System operation queue for transaction |
US9792147B2 (en) * | 2015-07-02 | 2017-10-17 | International Business Machines Corporation | Transactional storage accesses supporting differing priority levels |
US9792148B2 (en) | 2016-01-07 | 2017-10-17 | International Business Machines Corporation | Prioritization of transactions based on execution progress |
JP6645348B2 (ja) | 2016-05-06 | 2020-02-14 | 富士通株式会社 | 情報処理装置、情報処理プログラム、及び情報処理方法 |
US10289491B1 (en) | 2017-04-28 | 2019-05-14 | EMC IP Holding Company LLC | Method and system for implementing multi-dimensional raid in an extensible storage array to optimize performance |
US10466930B2 (en) * | 2017-04-28 | 2019-11-05 | EMC IP Holding Company LLC | Method and system for fast ordered writes with atomic multicast |
US10614019B2 (en) | 2017-04-28 | 2020-04-07 | EMC IP Holding Company LLC | Method and system for fast ordered writes with target collaboration |
US10339062B2 (en) | 2017-04-28 | 2019-07-02 | EMC IP Holding Company LLC | Method and system for writing data to and read data from persistent storage |
US11182379B2 (en) | 2018-08-24 | 2021-11-23 | Oracle International Corporation | DAG based methods and systems of transaction processing in a distributed ledger |
US20230229500A1 (en) * | 2020-06-12 | 2023-07-20 | Information Science Laboratory, Ltd. | Parallel and distributed computing system |
US11822538B2 (en) | 2020-11-05 | 2023-11-21 | Oracle International Corporation | Systems and methods of transaction identification generation for transaction-based environment |
KR102567658B1 (ko) * | 2021-04-14 | 2023-08-16 | 주식회사 카카오뱅크 | 멀티 트랜잭션을 이용한 업무 컴포넌트 격리 개발 방법 및 시스템 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4884228A (en) * | 1986-10-14 | 1989-11-28 | Tektronix, Inc. | Flexible instrument control system |
US6011921A (en) * | 1996-03-19 | 2000-01-04 | Fujitsu Limited | Intermediate communication controller that sends transmission data in a predetermined order to a corresponding slave unit upon request from a master controller |
US6088705A (en) * | 1997-07-02 | 2000-07-11 | International Business Machines Corporation | Method and apparatus for loading data into a database in a multiprocessor environment |
EP1197876A2 (en) * | 2000-10-13 | 2002-04-17 | Miosoft Corporation | Persistent data storage techniques |
US6557048B1 (en) * | 1999-11-01 | 2003-04-29 | Advanced Micro Devices, Inc. | Computer system implementing a system and method for ordering input/output (IO) memory operations within a coherent portion thereof |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05197604A (ja) * | 1991-05-21 | 1993-08-06 | Digital Equip Corp <Dec> | マルチプロセッサ・コンピュータ及びその動作方法 |
US5701480A (en) * | 1991-10-17 | 1997-12-23 | Digital Equipment Corporation | Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing |
US5241675A (en) * | 1992-04-09 | 1993-08-31 | Bell Communications Research, Inc. | Method for enforcing the serialization of global multidatabase transactions through committing only on consistent subtransaction serialization by the local database managers |
US5335343A (en) * | 1992-07-06 | 1994-08-02 | Digital Equipment Corporation | Distributed transaction processing using two-phase commit protocol with presumed-commit without log force |
JPH1049420A (ja) * | 1996-08-02 | 1998-02-20 | Fuji Xerox Co Ltd | データベース管理方法 |
US6456995B1 (en) | 1998-12-31 | 2002-09-24 | International Business Machines Corporation | System, method and computer program products for ordering objects corresponding to database operations that are performed on a relational database upon completion of a transaction by an object-oriented transaction system |
AU6784600A (en) * | 1999-08-17 | 2001-03-13 | Progress Software, Inc. | Concurrent commit lock |
US20040236659A1 (en) * | 1999-12-01 | 2004-11-25 | Cazalet Edward G. | Method and apparatus for an engine system supporting transactions, schedules and settlements involving fungible, ephemeral commodities including electrical power |
US7111023B2 (en) * | 2001-05-24 | 2006-09-19 | Oracle International Corporation | Synchronous change data capture in a relational database |
GB0130399D0 (en) * | 2001-12-19 | 2002-02-06 | Ibm | Message ordering in a messaging system |
US6754737B2 (en) * | 2001-12-24 | 2004-06-22 | Hewlett-Packard Development Company, L.P. | Method and apparatus to allow dynamic variation of ordering enforcement between transactions in a strongly ordered computer interconnect |
US6785779B2 (en) * | 2002-01-09 | 2004-08-31 | International Business Machines Company | Multi-level classification method for transaction address conflicts for ensuring efficient ordering in a two-level snoopy cache architecture |
US7685583B2 (en) * | 2002-07-16 | 2010-03-23 | Sun Microsystems, Inc. | Obstruction-free mechanism for atomic update of multiple non-contiguous locations in shared memory |
US7103612B2 (en) * | 2002-08-01 | 2006-09-05 | Oracle International Corporation | Instantiation of objects for information-sharing relationships |
US7076508B2 (en) * | 2002-08-12 | 2006-07-11 | International Business Machines Corporation | Method, system, and program for merging log entries from multiple recovery log files |
US7089253B2 (en) * | 2002-09-13 | 2006-08-08 | Netezza Corporation | Computer method and system for concurrency control using dynamic serialization ordering |
US6961821B2 (en) * | 2002-10-16 | 2005-11-01 | International Business Machines Corporation | Reconfigurable cache controller for nonuniform memory access computer systems |
US7010645B2 (en) * | 2002-12-27 | 2006-03-07 | International Business Machines Corporation | System and method for sequentially staging received data to a write cache in advance of storing the received data |
US6898685B2 (en) * | 2003-03-25 | 2005-05-24 | Emc Corporation | Ordering data writes from a local storage device to a remote storage device |
US7136967B2 (en) * | 2003-12-09 | 2006-11-14 | International Business Machinces Corporation | Multi-level cache having overlapping congruence groups of associativity sets in different cache levels |
US7266571B2 (en) * | 2004-07-27 | 2007-09-04 | International Business Machines Corporation | Method and system for scheduling a partial ordered transactions for event correlation |
US7376675B2 (en) * | 2005-02-18 | 2008-05-20 | International Business Machines Corporation | Simulating multi-user activity while maintaining original linear request order for asynchronous transactional events |
US7720891B2 (en) * | 2006-02-14 | 2010-05-18 | Oracle America, Inc. | Synchronized objects for software transactional memory |
-
2006
- 2006-11-17 US US11/601,541 patent/US7711678B2/en active Active
-
2007
- 2007-10-23 TW TW096139748A patent/TWI424313B/zh not_active IP Right Cessation
- 2007-11-17 RU RU2009118454/08A patent/RU2439663C2/ru not_active IP Right Cessation
- 2007-11-17 JP JP2009537403A patent/JP4698757B2/ja active Active
- 2007-11-17 KR KR1020097010737A patent/KR101443930B1/ko active IP Right Grant
- 2007-11-17 BR BRPI0718463-8A patent/BRPI0718463A2/pt not_active IP Right Cessation
- 2007-11-17 CN CN2007800428099A patent/CN101535950B/zh active Active
- 2007-11-17 CA CA002664041A patent/CA2664041A1/en not_active Abandoned
- 2007-11-17 EP EP07845108.5A patent/EP2095225B1/en active Active
- 2007-11-17 WO PCT/US2007/085035 patent/WO2008064139A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4884228A (en) * | 1986-10-14 | 1989-11-28 | Tektronix, Inc. | Flexible instrument control system |
US6011921A (en) * | 1996-03-19 | 2000-01-04 | Fujitsu Limited | Intermediate communication controller that sends transmission data in a predetermined order to a corresponding slave unit upon request from a master controller |
US6088705A (en) * | 1997-07-02 | 2000-07-11 | International Business Machines Corporation | Method and apparatus for loading data into a database in a multiprocessor environment |
US6557048B1 (en) * | 1999-11-01 | 2003-04-29 | Advanced Micro Devices, Inc. | Computer system implementing a system and method for ordering input/output (IO) memory operations within a coherent portion thereof |
EP1197876A2 (en) * | 2000-10-13 | 2002-04-17 | Miosoft Corporation | Persistent data storage techniques |
Non-Patent Citations (1)
Title |
---|
Nir Shavit,Dan Touitou.Software transactional memory.《Distributed computing》.1997,第10卷(第2期), * |
Also Published As
Publication number | Publication date |
---|---|
BRPI0718463A2 (pt) | 2013-12-10 |
JP4698757B2 (ja) | 2011-06-08 |
KR20090082256A (ko) | 2009-07-29 |
JP2010510590A (ja) | 2010-04-02 |
RU2009118454A (ru) | 2010-11-20 |
CN101535950A (zh) | 2009-09-16 |
CA2664041A1 (en) | 2008-05-29 |
TW200834303A (en) | 2008-08-16 |
KR101443930B1 (ko) | 2014-09-23 |
WO2008064139A1 (en) | 2008-05-29 |
EP2095225A4 (en) | 2010-10-20 |
US20080120484A1 (en) | 2008-05-22 |
US7711678B2 (en) | 2010-05-04 |
TWI424313B (zh) | 2014-01-21 |
EP2095225A1 (en) | 2009-09-02 |
EP2095225B1 (en) | 2017-11-01 |
RU2439663C2 (ru) | 2012-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101535950B (zh) | 用于事务应用排序和争用管理的方法和系统 | |
CN101681272B (zh) | 使用事务来并行化顺序框架 | |
CN101681292B (zh) | 使用事务来并行化顺序框架的方法 | |
US9747086B2 (en) | Transmission point pattern extraction from executable code in message passing environments | |
US10884822B2 (en) | Deterministic parallelization through atomic task computation | |
CN101681294B (zh) | 用于存储器事务分组的方法和系统 | |
JP2010524133A (ja) | バッファリングされた書込みおよび強制的直列化順序を使用するトランザクショナルメモリ | |
TW200901026A (en) | Exception ordering in contention management to support speculative sequential semantics | |
Kuper et al. | Taming the parallel effect zoo: Extensible deterministic parallelism with LVish | |
Friesen et al. | Java threads and the concurrency utilities | |
Prokopec | Learning Concurrent Programming in Scala | |
González | Java 7 concurrency cookbook | |
Karau et al. | Scaling Python with Ray | |
Crawford et al. | OpenCL Command-buffer Extension: Design and Implementation | |
González | Java 9 concurrency cookbook | |
US9223637B1 (en) | Method and apparatus to advise spin and yield decisions | |
Chakraborty | Operating Systems: Evolutionary Concepts and Modern Design Principles | |
Sahoo et al. | Computer Science with C++ | |
Havlena et al. | Modular Mix-and-Match Complementation of Büchi Automata | |
Abbas et al. | LEARN. NET WITH PROGRAMMING (3-in-1): Covers. NET using C#, Visual Basic ASP. NET | |
Agafonov | Multithreading with C# Cookbook | |
Agafonov et al. | Mastering C# Concurrency | |
Edwards et al. | Kokkos Technical Review Slides and Discussion Notes. | |
Mohan | Operating Systems | |
Blewett et al. | Basic Thread Safety |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150511 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150511 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |