CN102282548B - 事务性的存储器中的事务处理 - Google Patents
事务性的存储器中的事务处理 Download PDFInfo
- Publication number
- CN102282548B CN102282548B CN200980154875.4A CN200980154875A CN102282548B CN 102282548 B CN102282548 B CN 102282548B CN 200980154875 A CN200980154875 A CN 200980154875A CN 102282548 B CN102282548 B CN 102282548B
- Authority
- CN
- China
- Prior art keywords
- atomic transaction
- memory
- transaction
- explorer
- resource manager
- 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
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
事务性的存储器处理系统可以将编译器级别的事务性的存储器概念集成到更高级别的传统的事务处理系统中。编译器级别的原子块可以被指定为原子块事务,并包括原子性和隔离性的特征。此原子块事务内的动作包括从储存库中征募资源管理器。储存库现在可以包括预先编程的存储器资源管理器,以管理事务性的存储器。如在传统的事务中,可以使用提交协议来判断动作是否有效,并可以在事务的外部公开。然而,与传统的事务不同,如果全部动作没有被验证,事务不需要死亡。相反,存储器冲突会导致原子块事务的回滚和重新执行,这是可以重复的,只要需要,直到存储器资源管理器表决提交。
Description
背景技术
对于共享存储器的多处理器系统的并行编程可包括多个线程访问相同数据的能力。多个线程在多个处理器上、多个处理器核上,或附接到在处理器之间共享的存储器的其他类似类上执行。共享存储器模型是最常部署的多线程通信方法。它允许以和顺序程序大致相同的方式创建多线程程序。为了实现共享存储器模型,并行编程很小心以避免会产生诸如竞赛等等之类的不期望的状况的并行访问以及对共享数据的使用。
锁是避免对共享数据的并行访问的问题的常见的解决方案。锁是以一个前提为中心,即,其他线程也可以试图访问被某一线程访问的变量,而该变量一次只能由一个线程使用。锁允许一个线程取得对一个变量的控制,并阻止其他线程更改该变量,直到它被解除锁定。基于锁的协议,尽管流行,常常被视为难以使用。以粗略化方式使用锁会保护相对来说大量的数据,但是,对于它们的使用一般不能缩放。甚至在线程不干扰的情况下线程也彼此阻止,而锁变为竞争的源。可另选地,以更加细微的方式使用锁会减轻可缩放性问题,但是,锁会带来其他问题,因为确保正确性并避免死锁的锁定约定变得复杂,并易于出错。
另一个解决方案是使用事务性的存储器来实现应用程序。事务性的存储器系统这样管理线程的存储器访问:通过以如果两个或更多线程尝试以冲突的方式访问同一个存储器位置,线程的影响可以被回滚或撤消这样的方式来执行线程。事务性的存储器系统可以使用硬件和/或软件组件来实现。软件事务性的存储器系统可以在软件运行时库和/或运行时执行环境中和/或使用编译器提供语义。事务性的存储器常常被实现为编译器级别的并行性控制机制,用于基于这样的前提来控制对共享存储器的访问:由一个线程读取的变量很可能不会被其他线程修改,如此,变量可以被共享,而不会对程序的可缩放性的粗糙的分叉(ramification)。然而,跟踪事务性的存储器系统中的存储器访问可能会对于程序的执行带来开销。
在基于粗略的锁的协议上的事务性的存储器的一个优点是并行性增大。在事务性的存储器中,没有线程需要等待对数据的访问,不同的线程可以安全地并且同时修改通常将受同一个锁保护的数据结构的不相交的部分。尽管重试失败的事务的开销,在许多现实的并行程序中,冲突会出现得足够少,以至于从某些数量的处理器或处理器核开始的基于粗略的锁的协议可以有性能优势。
尽管事务性的存储器有前途,并是大量的研究的主题,但是,障碍仍在于其广泛应用和接受。例如,由于不熟悉并缺乏事务性的存储器的现实的对用户友好的实现,程序员会不愿使用事务性的存储器。
发明内容
提供本发明内容是为了以精简的形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。
本发明涉及将编译器级别的事务性的存储器概念集成到更高级别的传统的事务(如数据库事务)处理中。编译器级别的原子块可以被指定为原子块事务,并包括原子性和隔离性的特征。此原子块事务内的动作包括从可用资源管理器的储存库中征募资源管理器。储存库现在可以包括预先编程的存储器资源管理器,以管理事务性的存储器。如在传统的事务中,可以使用提交协议来判断动作是否成功,并可以在事务的外部公开结果。然而,与传统的事务不同,如果一些动作没有被验证,事务不需要死亡。相反,存储器冲突会导致包括存储器的所有资源管理器的回滚,以及重新执行原子块事务。只要需要,就可以重复重新执行,直到成功地验证所有操作,包括存储器资源管理器操作。
附图说明
各个附图被包括以提供对实施例的进一步理解,各个附图被收入并构成本说明书的一部分。附图示出了实施例,并与说明书一起,用于说明各实施例的原理。通过参考以下详细描述,可更易于领会并更好地理解其他实施例以及各实施例的许多预期的优点。附图的元素相对于彼此不一定是按比例附图的。相同的附图标记表示对应的类似的部分。
图1是示出了实现本公开的特征的计算设备的许多可能的示例中的一个的框图。
图2是示出了在图1的示例计算系统中实现的示例事务性的存储器处理系统的框图。
图3是示出了图2的事务性的存储器处理系统中所使用的示例过程的流程图。
图4是示出了图2的提交协议相对于时间线的示例过程的示意图。
具体实施方式
在下面的详细描述中,将参考构成本发明的一部分的附图,并且附图中作为说明示出了其中可实施本发明的具体实施例。应该理解,在不偏离本发明的范围的情况下,可以利用其他实施例,也可以进行结构性的或逻辑性更改。因此,下面的详细描述不是在限制性的意义上进行的,并且本发明的范围由所附权利要求来进行定义。还可以理解,此处所描述的各示例性实施例的特点可以彼此相结合,除非另外特别声明。
图1示出了可以用作操作环境并包括诸如计算设备100之类的计算设备的示例性计算机系统。在基本配置中,计算设备100通常包括具有至少两个处理单元(即,处理器102)以及存储器104的处理器体系结构。取决于计算设备的确切配置和类型,存储器104可以是易失性的(如随机存取存储器(RAM))、非易失性的(如只读存储器(ROM)、闪存等等)或两种类型的某种组合。在图1中通过线106示出了此基本配置。计算设备可以呈现多种形式中的一个或多个。这样的形式包括个人计算机、服务器、手持式设备、消费类电子产品(如视频游戏控制台)或其他。
计算设备100还可以具有附加特征/功能。例如,计算设备100还可以包括另外的存储器(可移动和/或不可移动),包括但不限于,磁盘和光盘或固态存储器,或诸如可移动存储器108以及不可移动存储器110之类的闪存设备。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何合适的方法和技术实现的易失性和非易失性、可移动和不可移动介质。存储器104、可移动存储108和不可移动存储110都是计算机存储介质的示例。计算机存储介质包括,但不仅限于,RAM、ROM、EEPROM、闪存或其他存储技术,CD-ROM、数字多功能盘(DVD)或其他光存储,磁带盒、磁带、磁盘存储或其他磁存储设备,通用串行总线(USB)闪存驱动器、闪存卡,或其他闪存设备,或可以用来存储所需信息并可由计算设备100访问的任何其他介质。任何这样的计算机存储介质可以是计算设备100的一部分。
计算设备100包括允许计算设备100与其他计算机/应用程序/用户115进行通信的一个或多个通信连接114。计算设备100也可以包括输入设备112,如键盘、指示设备(例如,鼠标)、笔、语音输入设备、触摸输入设备等等。计算设备100也可以包括诸如显示器、扬声器、打印机等等之类的输出设备111。
计算系统100可以被配置成运行构成系统平台的操作系统软件程序以及一个或多个软件应用程序。在一个示例中,计算系统100包括被称为运行时环境的软件组件。运行时环境可以作为操作系统的一部分被包括,或可以稍后作为软件下载被包括。运行时环境通常包括对常见的编程问题的预先编码的解决方案,以帮助软件开发人员创建诸如在运行时环境中运行的应用程序之类的软件程序,它通常还包括允许软件应用程序在运行时环境中运行的虚拟机,以便程序员不必考虑特定处理器102的能力。运行时环境的示例包括来自美国华盛顿州雷德蒙市的微软公司的.Net公共语言例程,还包括C++例程,还有其他许多。
图2示出了示例事务性的存储器处理系统200,它可以在运行时环境中被调用,以支持原子块事务202,该原子块事务202可以是一线程中的软件代码的原子块。原子块事务202包括描述原子块并指定代码以参与事务性的存储器处理系统200中的事务边界201,203。原子块事务202包括至少一个事务性的存储器动作204,但是示出了还包括第二或非存储器动作204。事务性的存储器动作204为存储器操作提供了事务性的存储器。可以在原子块事务中包括其他动作,如影响变量的动作,影响副作用的动作等等。系统200包括对应于至少一个存储器动作的至少一个存储器资源管理器,如对应于事务性的存储器动作204的存储器资源管理器208。系统200可包括对应于至少一个非存储器动作的至少一个非存储器资源管理器,如被征募到事务202中以对应于示例中的非存储器第二动作206的非存储器资源管理器210。资源管理器208,210各自管理参与事务202中的动作适当的资源212,214。用事务管理器216协调资源管理器208,210的动作,事务管理器216同资源管理器208,210一道工作,以确保事务202的原子性和隔离性。事务管理器216实现提交协议218。资源管理器208,210还参与提交协议218。在另一示例中,原子块事务可包括对应于多个资源管理器和资源的两个以上的动作。
事务202是由单一线程执行的绑定在一起的动作的序列。在考虑或不考虑同时在其他处理器上运行的其他线程的情况下,一个线程完成对共享存储器中的数据的修改。无论如何,在完成一个事务之后,事务性的存储器验证其他线程没有同时对被访问的数据进行更改。验证更改,如果验证是成功的,则在提交操作中使它成为永久性的。如果验证失败,则撤消或“回滚”更改,并重新执行事务202,直到验证成功。
事务202拥有原子性和隔离性的特征。事务是原子的,并在逻辑上瞬时执行。如果一个动作失败,那么,整个事务都失败。同样,事务与其他线程隔离,因为没有变量在它们的中间状态向其他线程公开。在某些实施例中,隔离性只向在事务内执行的线程提供,而在没有对事务的保护的情况下正在访问数据的线程可以表明并行事务的中间状态。当到达块的末尾时,提交、中止或回滚以及重新执行事务。因此,提交或失败的单元是事务202,而并非整个进程,状态被返回到其原始形态,而并非公开中间状态。在这一方面,事务202类似于数据库技术的事务,即,数据库事务,只是它通常在编译器级别表达,并涉及事务性的存储器。然而,与典型的传统的事务(例如,数据库事务)不同,事务202可以重新执行,直到它成功。
资源管理器存在于传统的事务处理中,并管理参与事务的资源。但是,传统的事务处理到目前为止没有用于自动地隔离和同步对未连接到传统的事务的存储器的并行访问,这种并行访问使用了锁或者事务性的存储器机制。本示例的一个特征是,对事务性的存储器的管理是传统的事务系统的一部分,将事务性的存储器与传统的失败原子性组合–这与不控制对共享存储器的访问的传统的事务不同。事务性的存储器提议不提供跨存储器及其他资源的常规失败原子性。事务存储器提议中的错误处理复杂性常常阻止应用程序从局部失败或存储器冲突的组合记录。开发者还提供了通过手工制定他们知道如何处理并且因此影响生产力和质量后果的错误情况的有限集的解决方案来提供恢复功能。另外,手工制定错误处理解决方案被证明对于开发者来说并非是无足轻重的任务。然而,本公开中的示例将事务性的存储器结合到传统的事务处理中以提供失败的原子性。这样,要么所有的支持的动作都被执行,要么没有动作将被执行。运行时环境可以使用事务性的存储器机制作为存储器的预编程的资源管理器。其它合适动作的预编程的资源管理器可以被包括在当要使用该资源时可以在运行时环境中调用该资源的库或储存库中。
在资源管理器的预编程的库中不存在合适的资源管理器的很多情况下,程序开发者可以编写在该程序中使用的资源管理器或将其加入库。这可以以过渡的事务处理中使用的标准方式来完成,在没有事务处理系统200的情况下,这比手工制定错误处理解决方案更加可靠。
此外,传统的事务中所使用的资源管理器拥有原子性、一致性、隔离性,以及持久性(ACID)特征,而事务性的存储器中的事务处理不要求一致性和持久性的特征。结果,资源管理器208,210的示例可被实现为易失性资源管理器,而并非持久的资源管理器。易失性资源管理器将它们的状态存储在易失性存储器中,并不支持事务性的状态恢复。因此,开发易失性资源管理器比开发持久的资源管理器更加容易。在事务处理系统200的情况下,易失性资源管理器所使用的系统资源比持久的资源管理器所使用的少一些。适用于多个易失性资源管理器的示例事务管理器216是可用的轻型事务管理器,这种事务管理器可以显著减少由于比较持久的事务管理器而产生的开销。其他示例可包括持久的事务管理器或资源管理器。
资源管理器208,210自动地参与到事务202中,并根据事务的结果,提交或回滚对它们的状态作出的更改。运行时环境可以自动化将对于事务性的资源212,214征募到事务中以及对事务的管理。在将资源212,214征募到事务202中时,资源通知事务管理器:动作204,206希望对该资源执行事务性的工作。然后,动作204,206对资源212、214执行工作,如果没有功能错误或冲突发生,则事务管理器216应用提交协议218以通过资源管理器208,210要求资源212,214提交对其状态作出的更改。如果资源管理器208,210中的任何一个遇到错误,则事务管理器216将导致由动作204,206在事务内作出的所有更改的回滚。否则,事务管理器216将导致事务提交。在任一种情况下,事务管理器216都可以将决定通知给资源管理器208、210。
在一个示例中,在另一个资源管理器在事务202中征募之前,存储器资源管理器208首先充当事务管理器。如果没有其他资源动作发生,则资源管理器208可以独自执行,无需较高级别的事务管理器216。一旦另一个资源管理器征募,如果有的话,诸如非存储器资源管理器210,事务处理系统200就将事务202从“只限存储器事务”提升到使用事务管理器216的事务,存储器资源208就变为资源管理器。
图3示出了在300与事务性的存储器相结合地与事务处理一起使用的示例过程。在302,事务202在示例事务性的存储器处理系统200中运行。事务中的动作调用资源。在304,过程自动地征募适当的资源管理器以与资源一起工作。资源管理器检查以判断它是否已经被征募到事务中,如果没有,则在执行对应的动作之前资源管理器征募。资源管理器210在事务性的存储器的控制下管理受影响的存储器更改。然后,在306,可以将动作应用于资源。也是在306,通过适当地征募的资源管理器,操作事务中的其他动作。
在事务结束时或靠近结束时,事务管理器216调用提交协议218,以判断在与其他线程有冲突的情况下是否应该回滚事务,或是否在308提交更改。在一个示例中,提交协议218可以是一阶段提交协议,如当只有一个资源管理器被征募到事务中时。在另一示例中,提交协议218可以是两阶段提交协议,包括准备阶段310和提交阶段314。
具体而言,在从应用程序接收到提交请求时,事务管理器216可以使用两阶段提交协议218,该协议218在310通过在每一个被征募的资源管理器208,210上调用方法,以便获取对应的事务上的表决,开始所有被征募的参与者的准备阶段。资源管理器208,210中的每一个都通过分别调用准备方法或者回滚方法,表决提交或回滚。例如,如果没有存储器冲突,存储器动作资源管理器208可以表决提交。在提交协议218的第二阶段,取决于事务管理器是否从所有资源管理器接收到提交表决,或者是否接收到至少一个回滚表决,该事务管理器适当地响应。如果在312事务管理器从全部都调用了准备方法的所有资源管理器接收到一致的提交表决,则事务216在314为每一个资源管理器调用提交方法。然后,资源管理器可以使更改持久,并完成提交,然后,在释放事务202之后在316继续。如果有任何资源管理器在312在准备阶段表决不提交,则过程按如下方式处理失败。
如利用存储器资源管理器208标识的由存储器冲突所引起的失败与利用事务中所征募的非存储器资源管理器标识的失败是有区别的。例如,由存储器冲突所引起的失败会导致事务在318自动重新执行。一般而言,包括事务202的应用程序在重新执行最终成功时是不会注意到重新执行的。在某些实施例中,利用诸如非存储器资源管理器210之类的其他资源管理器标识的失败会导致事务中止,并不重新执行。例如,非存储器资源管理器中的一个或多个投票反对提交事务,而存储器资源管理器投票赞成提交事务,则事务不重新执行。如果在318存储器资源管理器208投票反对提交事务,无论非存储器资源管理器中的任何或全部表决提交与否,经由320在318到302发生回滚。在此示例中发生重新执行,因为非存储器资源管理器中的失败可能是存储器冲突的结果。如果每个资源管理器表决提交事务,则事务在314提交。
图4示出了两阶段提交协议的示例过程400,该协议可以在事务202结束时或靠近结束时实现并可以作为上文的元素308和310来执行。参考并行时间线402,404示出了存储器资源管理器208和事务管理器216的动作。存储器资源管理器208(及诸如管理器210或其它适用之类的其他资源管理器)向对特定事务中的表决有兴趣的事务管理器216发送征募通知406。当包括事务的代码结束时,它通知事务管理器216,它准备开始提交协议218。在408,事务管理器向存储器资源管理器208和被征募到事务中的任何其他资源管理器发出准备指令。
在408收到准备指令之后,在410,资源管理器208,210开始验证它们的相应的对象的过程。在存储器资源管理器的情况下,这可以表示,存储器资源管理器判断是否与其他线程有冲突。在412,资源管理器在作为表决向事务管理器216提供的表决中报告验证结果。如果没有冲突,存储器资源管理器208表决提交。否则,存储器资源管理器208表决不提交或否决来自其他资源管理器的任何提交表决。
如果所有资源管理器都表决提交,则在414事务管理器216向被征募到事务中的所有资源管理器,如存储器资源管理器208和资源管理器210,发送提交指令。作为原子块事务的结果的任何存储器更改被提交到共享状态,其中,它们被向其他线程公开。在存储器资源管理器的情况下,事务性的存储器将不会公开事务的被隔离的工作中的任何一个,直到接收提交指令。这样的提交工作可包括释放锁,将缓冲的存储器更改写回,或撤消暂定的存储器更改。一旦在416提交了事务的动作,应用程序继续进行。在418,过程400能够处理在队列中等待的应用程序的其他提交请求。
在某些示例中,按过程400的顺序发生两阶段提交协议的动作。在这些示例中,事务管理器提交顺序是与准备指令和从资源管理器接收到表决是同步的。在另一示例中,事务性的存储器处理系统可以转换到悲观的锁定,并避免参与过程400。可另选地,可以确保参与事务中的存储器与参与事务性的存储器原子块中的所有其他存储器不相交的事务性的存储器处理系统可以次序颠倒地执行动作。
事务性的存储器处理系统200还可以允许在事务内使用事务,或嵌套的事务。在这样的情况下,如在数据库事务的情况下,提交协议218可以导致嵌套被拉平(flattened)或被尊重(respected)。在拉平中,带有嵌套事务的事务表现为好像它是一个原子块。如果事务被回滚,包括嵌套事务的整个事务将重新执行。可另选地,事务性的存储器处理系统可以支持部分回滚,其中,重新执行嵌套事务,直到被提交。
将事务处理与事务性的存储器组合对于效率提高有好处。开发人员可以依赖于资源管理器的预编程的代码,而并非编写特殊化的代码,来进行错误处理并实现失败原子性。所有存储器访问都可以通过事务性的存储器实现自动地被包括到原子块事务的范围中,因为原子块和事务的词法范围(lexical scope)是一致的。它还使开发人员不必编写代码以解决当一些动作成功而另一些动作不成功时所有情况组合。
事务性的资源在由位于美国华盛顿州雷德蒙市的微软公司支持的平台上得到支持,这些平台可包括诸如以Microsoft SQL Server为名销售的数据库,其事务性的消息队列(MSMQ),以及以Windows Vista事务性的文件系统以及事务性的注册表为名的平台。可以使用诸如由微软公司所提供的从版本NT4以来的Windows操作系统中可用的分布式事务协调器(DTC),Windows XP之前的Windows的版本中的MTS,或第一次在Windows Vista中可用的内核事务管理器(KTM)之类的事务管理产品,来创建和管理事务。在微软推出的诸如.NET之类的受管理的代码中,“系统事务”特征提供使用DTC的管理应用程序接口,并提供其自己的轻型事务管理器(LTM)。LTM还提供创建与诸如数据库SQL之类的其他资源管理器一起参与事务的诸如存储器资源管理器之类的易失性资源管理器。
虽然此处示出和描述了特定实施例,但是,本领域技术人员可以理解,在不偏离本发明的范围的情况下,各种替换的和/或等效的实现可以代替所示出和描述的特定实施例。本申请旨在涵盖此处所讨论的特定实施例的任何修改或变化。因此,本发明旨在仅由权利要求以及其等效内容加以限制。
Claims (17)
1.一种控制具有对共享存储器的访问的原子事务的方法,所述方法包括:
征募至少一个非存储器资源管理器;
征募被配置成管理事务性的存储器的存储器资源管理器;
调用被配置成判断所述非存储器和存储器资源管理器是否表决提交所述原子事务的提交协议;
如果所述非存储器和存储器资源管理器表决提交所述原子事务,则提交所述原子事务;
如果所述存储器资源管理器没有表决提交所述原子事务,则重新执行所述原子事务;以及
如果所述非存储器资源管理器中的至少一个没有表决提交所述原子事务且所述存储器资源管理器表决提交所述原子事务,则中止所述原子事务,如果在原子事务过程中没有发生存储器冲突,则所述存储器资源管理器表决提交。
2.如权利要求1所述的方法,其特征在于,所述共享存储器包括征募所述存储器资源管理器之前的原始状态,其中所述重新执行所述原子事务包括将所述共享存储器回滚到所述原始状态。
3.如权利要求2所述的方法,其特征在于,在提交所述原子事务时,使对所述原始状态的更改持久,并使其处于公共状态。
4.如权利要求1所述的方法,其特征在于,重新执行所述原子事务包括重复地重新执行所述原子事务,直到所述原子事务中的所有资源管理器都表决提交或中止所述原子事务。
5.如权利要求1所述的方法,其特征在于,当所述非存储器资源管理器表决提交所述原子事务而至少一个存储器资源管理器表决中止时,重新执行所述原子事务。
6.如权利要求1所述的方法,其特征在于,所述提交协议包括准备阶段和提交阶段。
7.如权利要求1所述的方法,其特征在于,包括定义所述原子事务的边界。
8.如权利要求1所述的方法,其特征在于,所述原子事务包括嵌套的原子事务。
9.如权利要求8所述的方法,其特征在于,所述提交协议拉平所述原子事务以及所述嵌套的原子事务。
10.如权利要求8所述的方法,其特征在于,执行所述嵌套的原子事务,直到在执行所述原子事务之前它被提交。
11.一种事务性存储器处理系统,
所述事务性存储器用于控制多个线程对共享存储器的访问,所述系统包括:
配置用于被征募到原子事务中的至少一个非存储器资源管理器;
配置用于被征募到所述原子事务中并管理所述事务性的存储器的存储器资源管理器;
与被征募到所述原子事务中的所有资源管理器相耦合的事务管理器,其中,所述事务管理器被配置为从被征募到所述原子事务中的所有资源管理器接收关于判断是否提交所述原子事务的表决,并且其中基于来自被征募到所述原子事务中的所有资源管理器的提交表决来提交所述原子事务,所述存储器资源管理器确定在表决要不要提交之前是否发生存储器冲突,其中如果没有发生存储器冲突,所述存储器资源管理器表决提交。
12.如权利要求11所述的系统,其特征在于,所述资源管理器是易失性资源管理器。
13.如权利要求11所述的系统,其特征在于,所述事务管理器被配置为发出准备指令和提交指令。
14.如权利要求13所述的系统,其特征在于,被征募到所述原子事务中的资源管理器被配置为表决是否响应于所述准备指令提交所述原子事务。
15.如权利要求14所述的系统,其特征在于,所述原子事务包括边界,并且其中所述原子事务在所述原子事务的结束边界处提交所述原子事务。
16.一种用于事务性存储器处理的方法,所述事务性存储器用于控制多个线程对共享存储器的访问,所述方法包括:
通过乐观并行来控制对所述共享存储器中的变量的访问;
将资源管理器中的至少两个征募到原子事务中,并加载到计算设备上的存储器中,其中,所述资源管理器中的所述至少两个包括被配置成被征募参与管理存储器控制机制的存储器资源管理器;以及
提供被加载到易失性存储器并耦合到所述被征募的存储器资源管理器的事务管理器,其中,所述事务管理器被配置成从所述被征募的存储器资源管理器接收关于是否提交所述原子事务的表决,其中,所述存储器资源管理器依赖于在所述原子事务过程中是否发生了存储器冲突来进行表决,其中如果没有发生存储器冲突,所述存储器资源管理器表决提交。
17.如权利要求16所述的方法,其特征在于,所述方法在包括按多个并行性的类中的一个排列的多个处理器的计算设备上操作,并且,其中,所述原子事务被包括在具有在所述处理器中的至少两个上运行的具有多个线程的应用程序的一个线程上。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/353,905 | 2009-01-14 | ||
US12/353,905 US8166481B2 (en) | 2008-10-20 | 2009-01-14 | Transaction processing in transactional memory |
PCT/US2009/066889 WO2010082983A2 (en) | 2009-01-14 | 2009-12-04 | Transaction processing in transactional memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102282548A CN102282548A (zh) | 2011-12-14 |
CN102282548B true CN102282548B (zh) | 2015-06-17 |
Family
ID=42340247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980154875.4A Active CN102282548B (zh) | 2009-01-14 | 2009-12-04 | 事务性的存储器中的事务处理 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8166481B2 (zh) |
EP (1) | EP2377029A4 (zh) |
JP (1) | JP5501377B2 (zh) |
CN (1) | CN102282548B (zh) |
WO (1) | WO2010082983A2 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8386421B2 (en) | 2010-06-28 | 2013-02-26 | Microsoft Corporation | Concurrency control for confluent trees |
US8412689B2 (en) | 2010-07-07 | 2013-04-02 | Microsoft Corporation | Shared log-structured multi-version transactional datastore with metadata to enable melding trees |
US20120079245A1 (en) * | 2010-09-25 | 2012-03-29 | Cheng Wang | Dynamic optimization for conditional commit |
US9848106B2 (en) | 2010-12-21 | 2017-12-19 | Microsoft Technology Licensing, Llc | Intelligent gameplay photo capture |
KR101574451B1 (ko) | 2011-09-14 | 2015-12-03 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 트랜잭션 메모리 시스템 내구성 부여 |
US9110851B2 (en) * | 2011-09-29 | 2015-08-18 | Oracle International Corporation | System and method for persisting transaction records in a transactional middleware machine environment |
US9317549B2 (en) * | 2013-06-25 | 2016-04-19 | Optumsoft, Inc. | Constraint-based consistency with snapshot isolation |
US9858136B2 (en) | 2014-09-30 | 2018-01-02 | International Business Machines Corporation | Resource manager failure handling in a multi-process transaction environment |
US10140149B1 (en) * | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
BR112018016821A2 (pt) | 2016-02-23 | 2018-12-26 | Nchain Holdings Ltd | sistema e métodos implementados por computador |
JP6925346B2 (ja) | 2016-02-23 | 2021-08-25 | エヌチェーン ホールディングス リミテッドNchain Holdings Limited | ブロックチェーンベースのトークナイゼーションを用いた交換 |
AU2017223133B2 (en) | 2016-02-23 | 2022-09-08 | nChain Holdings Limited | Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys |
CN117611331A (zh) | 2016-02-23 | 2024-02-27 | 区块链控股有限公司 | 用于使用区块链在点对点分布式账簿上有效转移实体的方法及系统 |
GB2561729A (en) | 2016-02-23 | 2018-10-24 | Nchain Holdings Ltd | Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system |
JP6833861B2 (ja) | 2016-02-23 | 2021-02-24 | エヌチェーン ホールディングス リミテッドNchain Holdings Limited | ブロックチェーンシステム内におけるフィードバックを統合したエージェントベースチューリング完全なトランザクション |
SG10202007904SA (en) | 2016-02-23 | 2020-10-29 | Nchain Holdings Ltd | A method and system for securing computer software using a distributed hash table and a blockchain |
KR20180115768A (ko) | 2016-02-23 | 2018-10-23 | 엔체인 홀딩스 리미티드 | 블록체인으로부터 데이터의 안전한 추출을 위한 암호화 방법 및 시스템 |
ES2680851T3 (es) | 2016-02-23 | 2018-09-11 | nChain Holdings Limited | Registro y método de gestión automática para contratos inteligentes ejecutados por cadena de bloques |
US11606219B2 (en) | 2016-02-23 | 2023-03-14 | Nchain Licensing Ag | System and method for controlling asset-related actions via a block chain |
WO2017145004A1 (en) | 2016-02-23 | 2017-08-31 | nChain Holdings Limited | Universal tokenisation system for blockchain-based cryptocurrencies |
US10310820B2 (en) * | 2016-05-12 | 2019-06-04 | Basal Nuclei Inc | Programming model and interpreted runtime environment for high performance services with implicit concurrency control |
US10698724B2 (en) * | 2018-04-10 | 2020-06-30 | Osisoft, Llc | Managing shared resources in a distributed computing system |
CN111722946A (zh) * | 2020-06-28 | 2020-09-29 | 深圳壹账通智能科技有限公司 | 分布式事务处理方法、装置、计算机设备及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1755635A (zh) * | 2004-09-30 | 2006-04-05 | 英特尔公司 | 事务型存储器访问的混合硬件软件实现 |
US7328316B2 (en) * | 2002-07-16 | 2008-02-05 | Sun Microsystems, Inc. | Software transactional memory for dynamically sizable shared data structures |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2256514B (en) | 1991-05-21 | 1994-11-16 | Digital Equipment Corp | Commitment ordering for guaranteeing serializability across distributed transactions |
US5504899A (en) | 1991-10-17 | 1996-04-02 | Digital Equipment Corporation | Guaranteeing global serializability by applying commitment ordering selectively to global transactions |
US5701480A (en) | 1991-10-17 | 1997-12-23 | Digital Equipment Corporation | Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing |
US6529932B1 (en) * | 1998-04-01 | 2003-03-04 | Microsoft Corporation | Method and system for distributed transaction processing with asynchronous message delivery |
JP2000010810A (ja) | 1998-06-22 | 2000-01-14 | Toshiba Corp | トランザクション処理のコミット制御方法および同方法が適用される計算機システム |
US6526416B1 (en) * | 1998-06-30 | 2003-02-25 | Microsoft Corporation | Compensating resource managers |
US6728958B1 (en) * | 1998-07-31 | 2004-04-27 | Hewlett-Packard Development Company, L.P. | Volatile resource manager with pre-prepare notification |
US6463456B1 (en) | 1999-09-01 | 2002-10-08 | International Business Machines Corporation | Efficient registration for distributed transaction systems |
US6856993B1 (en) * | 2000-03-30 | 2005-02-15 | Microsoft Corporation | Transactional file system |
JP2002049519A (ja) * | 2000-08-03 | 2002-02-15 | Nippon Yunishisu Kk | 情報処理装置およびその方法 |
JP3621641B2 (ja) * | 2000-11-20 | 2005-02-16 | 株式会社東芝 | トランザクション処理の管理方法 |
US6938130B2 (en) | 2003-02-13 | 2005-08-30 | Sun Microsystems Inc. | Method and apparatus for delaying interfering accesses from other threads during transactional program execution |
US7206903B1 (en) | 2004-07-20 | 2007-04-17 | Sun Microsystems, Inc. | Method and apparatus for releasing memory locations during transactional execution |
US7747565B2 (en) | 2005-12-07 | 2010-06-29 | Microsoft Corporation | Garbage collector support for transactional memory |
US8065499B2 (en) | 2006-02-22 | 2011-11-22 | Oracle America, Inc. | Methods and apparatus to implement parallel transactions |
US7620850B2 (en) | 2006-06-09 | 2009-11-17 | Sun Microsystems, Inc. | Breakpoints in a transactional memory-based representation of code |
US7434010B2 (en) * | 2006-08-04 | 2008-10-07 | Microsoft Corporation | Combined pessimistic and optimisitic concurrency control |
US8010550B2 (en) | 2006-11-17 | 2011-08-30 | Microsoft Corporation | Parallelizing sequential frameworks using transactions |
US7949841B2 (en) | 2006-12-08 | 2011-05-24 | Microsoft Corporation | Protection of critical memory using replication |
US7516365B2 (en) | 2007-07-27 | 2009-04-07 | Sun Microsystems, Inc. | System and method for split hardware transactions |
US8108631B2 (en) * | 2008-07-18 | 2012-01-31 | Oracle America, Inc. | Transactional memory support for non-coherent shared memory systems using selective write through caches |
US20100083268A1 (en) | 2008-09-29 | 2010-04-01 | Morris Robert P | Method And System For Managing Access To A Resource By A Process Processing A Media Stream |
US8001548B2 (en) | 2008-10-20 | 2011-08-16 | Microsoft Corporation | Transaction processing for side-effecting actions in transactional memory |
-
2009
- 2009-01-14 US US12/353,905 patent/US8166481B2/en not_active Expired - Fee Related
- 2009-12-04 CN CN200980154875.4A patent/CN102282548B/zh active Active
- 2009-12-04 EP EP09838555A patent/EP2377029A4/en not_active Ceased
- 2009-12-04 JP JP2011546244A patent/JP5501377B2/ja not_active Expired - Fee Related
- 2009-12-04 WO PCT/US2009/066889 patent/WO2010082983A2/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7328316B2 (en) * | 2002-07-16 | 2008-02-05 | Sun Microsystems, Inc. | Software transactional memory for dynamically sizable shared data structures |
CN1755635A (zh) * | 2004-09-30 | 2006-04-05 | 英特尔公司 | 事务型存储器访问的混合硬件软件实现 |
Also Published As
Publication number | Publication date |
---|---|
JP2012515393A (ja) | 2012-07-05 |
EP2377029A2 (en) | 2011-10-19 |
WO2010082983A3 (en) | 2010-09-10 |
WO2010082983A2 (en) | 2010-07-22 |
US20100100689A1 (en) | 2010-04-22 |
EP2377029A4 (en) | 2012-08-08 |
JP5501377B2 (ja) | 2014-05-21 |
US8166481B2 (en) | 2012-04-24 |
CN102282548A (zh) | 2011-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102282548B (zh) | 事务性的存储器中的事务处理 | |
CN102187321B (zh) | 对事务存储器中的副作用动作的事务处理 | |
Dickerson et al. | Adding concurrency to smart contracts | |
EP2150900B1 (en) | Transactional memory using buffered writes and enforced serialization order | |
TWI431474B (zh) | 在交換式記憶體中之平行巢狀交換 | |
JP4698757B2 (ja) | ソフトウェアトランザクションのコミット順序および競合の管理 | |
CN100410872C (zh) | 用于增强的运行时间主机支持的方法和设备 | |
JPH0296849A (ja) | Tpキューイングシステムにおける正確に1回のセマンティクス | |
US8060879B2 (en) | Predictive log synchronization | |
US7840530B2 (en) | Parallel nested transactions in transactional memory | |
JP3512439B2 (ja) | チェックイン・チェックアウトモデルにおける施錠方式 | |
US8719515B2 (en) | Composition of locks in software transactional memory | |
CN102289387B (zh) | 软件事务存储器中的动作框架 | |
CN101681272A (zh) | 使用事务来并行化顺序框架 | |
TW200901026A (en) | Exception ordering in contention management to support speculative sequential semantics | |
Siek et al. | Atomic RMI: A distributed transactional memory framework | |
CA2704511C (en) | Improvements in and relating to financial systems | |
Fernandes et al. | A scalable and efficient commit algorithm for the JVSTM | |
Choi | Formal Verification of Chase-Lev Deque in Concurrent Separation Logic | |
Zhu | Building a Distributed Transaction Processing System Using DARQ |
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: 20150717 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150717 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |