当前位置: 首页 > 专利查询>微软公司专利>正文

在事务存储器系统中高效地定位事务代码块技术方案

技术编号:4611210 阅读:207 留言:0更新日期:2012-04-11 18:40
公开了用于在事务存储器系统中创建和/或定位事务代码块的各种技术和方法。诸如软件开发者等用户可以用标识符来装饰特定函数以便指示该特定函数是事务安全的。接着创建软件应用程序中的被标记为事务安全的每一个函数的普通版本和事务版本。创建未被标记为事务安全的每一个函数的普通版本。对于被标记为事务安全的每一个函数的普通版本,该普通版本中的存根指针指向事务版本。然后取决于执行上下文来调用该函数的适当的版本。

【技术实现步骤摘要】
【国外来华专利技术】在事务存储器系统中髙效地定位事务代码块背景软件事务存储器(STM)是类似于数据库事务的、用于在并发计算中控制对共享存储器的访问的并发控制机制。事务存储器的上下文中的事务是执行对 共享存储器的一系列读取和写入的代码片段。STM用作传统锁定机制的替换。程序员在代码块周围放置声明性注释(例如,原子的)以指示这些代码块所需 要的安全特性,并且系统自动保证该块相对于其它受保护的代码区域原子地执 行。软件事务存储器编程模型防止了基于锁的优先级倒置和死锁问题。软件事务存储器(STM)系统可以接受某些顺序程序并且允许使用事务来同 时(例如并行地)执行这些程序的各部分。这些顺序程序的源代码通常是由程序员 通过使用各种类型的编程语言中的一种来编写。源代码通常被封装在包含稍后由计 算机执行的逻辑的一个或多个函数中。此处宽泛地使用术语函数来涵盖函数、 方法、过程、语句块和/或由计算机执行的逻辑的其它部分。有了软件事务存储器 系统,可根据事务上下文来调用的每一个函数都必须具有两个版本, 一个可根据事 务来调用的版本和一个可根据非事务来调用的版本。确定要调用函数的哪一个版本 是上下文相关的。该确定必须在对虚函数的调用的运行时或通过函数指针来完成。概述公开了用于在事务存储器系统中创建和/或定位事务代码块的各种技术和方 法。诸如软件开发者等用户可以用标识符来装饰特定函数以便指示该特定函数是事 务安全的。然后创建软件应用程序中的被标记为事务安全的每一个函数的普通版本 和事务版本。创建未被标记为事务安全的每一个函数的普通版本。对于被标记为事 务安全的每一个函数的普通版本,普通版本中的存根指针(stubpointer)指向事务 版本。然后取决于应用程序上下文来调用函数的适当的版本。在一个实现中,编译器生成函数的事务和非事务版本以便与事务存储器系统 一起使用。在编译时,为软件应用程序中的每一个函数分配存根指针。对于未被标 记未事务安全函数的每一个相应的函数,生成相应函数的普通版本,并且用运行时 出错处理例程的入口点来填充存根指针。对于被标记为事务安全函数的每一个相应5的函数,创建是事务安全的相应函数的普通版本和事务版本的代码。然后,在普通 版本的存根指针中,填充到事务版本的入口点。在事务版本的存根指针,填充到运 行时出错处理例程的入口点。提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的 一些概念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不 旨在用于帮助确定所要求保护的主题的范围。附图简述附图说明图1是一个实现的计算机系统的图示。图2是在图1的计算机系统上操作的一个实现的事务存储器应用程序的图示。 图3是图1的系统的一个实现的高级处理流程图。图4是图1的系统的一个实现的处理流程图,其示出了作为编译和/或链接过程的一部分的、在使用代码生成器来生成事务和非事务函数的代码并填充存根指针 时所涉及的各阶段。图5是图1的系统的一个实现的示图,其示出了用于取决于执行上下文来选 择要调用的函数的适当的版本的决策树。图6是一个实现的逻辑图,其示出了两个假想函数, 一个仅具有普通版本而 另一个具有普通版本和事务版本。详细描述为促进对本专利技术的原理的理解,现将对附图中所示的各实施例加以参考,同 时也将用具体语言描述它们。不过,需要理解的是,并无意由此作出范围上的限制。 对所述实施例的任何改变和进一步更改,以及在此所述的原理的进一步应用都可以 预期将是本领域技术人员通常能想到的。本系统可以在一般上下文中被描述为事务存储器系统,但是本系统还用于除 此之外的其它目的。在一个实现中,此处所描述的一个或多个技术可被实现为诸如 微软⑧.NET框架等框架程序内的、或来自为开发者提供开发软件应用程序的平台 任何其它类型的程序或服务的特征。在另一实现中,此处所描述的一个或多个技术 被实现为涉及开发在并发环境中执行的应用程序的其它应用程序的特征。在一个实现中,提供了通过编程创建被标记为事务安全的每一个函数的以下 两个版本的事务存储器系统函数的普通版本和函数的事务版本。对于未被标记为事务安全的函数,仅创建普通版本并且该普通版本的入口点处的存根指针指向出错 处理例程。然后,对于被标记为事务安全的函数,普通版本的入口点的存根指针指 向函数的事务版本。该事务版本的入口点处的存根指针指向出错处理例程。对于未 被标记为事务安全的函数,普通版本的入口点处的存根指针指向出错处理例程。然 后取决于执行上下文来调用函数的适当的版本。如图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。还可以包括诸如显示器、扬声器、打印机等输 出设备lll。这些设备在本领域中公知且无需在此处详细讨论。在一个实现中,计 算设备100包括事务存储器应用程序200。事务存储器应用程序200将在图2中更 详细地描述。现在转向图2,并继续参考图l,示出了在计算设备100上操作的事务存储器 应用程序200。事务存储器应用程序200是驻留在计算设备100上的应用程序中的 一个。然而,可以理解,事务存储器应用程序200可另选地或另外地被具体化为一 个或多个计算机上的计算机可执行指令和/或与图1所示的不同的变型。另选地或 另外地,事务存储器应用程序200的一个或多个部分可以是系统存储器104的一部7分、可以在其它计算机和/或应用程序115上、或可以是计算机软件领域的技术人 员能想到的其它此类变型。事务存储器应用程序200包括负责实现此处所描述的技术中的部分或全部的 程序逻辑204。程序逻辑204包括用于提供事务存储器系统的逻辑206;用于允许 用户/开发者用属性或其它标识符来装饰软件应用程序的函数以指示函数是事务安 全的逻辑208;用于创建被标记为事务安全的每一个函数的两个版本(例如普通版 本和事务版本)的逻辑210;用本文档来自技高网...

【技术保护点】
一种具有用于使得计算机执行以下步骤的计算机可执行指令的计算机可读介质,所述步骤包括: 提供事务存储器系统(206); 创建软件应用程序中的被标记为事务安全的每一个函数的普通版本和事务版本(210); 创建未被标记为事务安全 的每一个函数的普通版本(212);以及 对于被标记为事务安全的每一个函数的普通版本,使所述普通版本的存根指针指向所述事务版本(216)。

【技术特征摘要】
【国外来华专利技术】US 2007-6-1 11/809,5141.一种具有用于使得计算机执行以下步骤的计算机可执行指令的计算机可读介质,所述步骤包括提供事务存储器系统(206);创建软件应用程序中的被标记为事务安全的每一个函数的普通版本和事务版本(210);创建未被标记为事务安全的每一个函数的普通版本(212);以及对于被标记为事务安全的每一个函数的普通版本,使所述普通版本的存根指针指向所述事务版本(216)。2. 如权利要求1所述的计算机可读介质,其特征在于,所述存根指针被分配 在每一个函数的普通版本的代码部分之前(214)。3. 如权利要求1所述的计算机可读介质,其特征在于,对于被标记为事务安 全的每一个函数,使所述普通版本的存根指针指向出错处理例程(216)。4. 如权利要求1所述的计算机可读介质,其特征在于,被标记为事务安全的 每一个函数的事务版本具有指向出错处理例程的存根指针(284)。5. 如权利要求1所述的计算机可读介质,其特征在于,未被标记为事务安全 的每一个函数的普通版本具有指向出错处理例程的存根指针(286)。6. —种用于在事务存储器系统中定位事务代码块的方法,所述方法包括以下 步骤提供事务存储器系统(242);允许用户用标识符来装饰特定函数以指示该特定函数是事务安全的(244); 创建所述特定函数的两个版本, 一个不用于事务的普通函数和一个用于事务 的事务函数(246);以及将指向所述事务函数的存根指针存储在所述普通函数中(248)。7. 如权利要求6所述的方法,其特征在于,还包括 取决于执行上下文来调用所述特定函数的适当的版本(250)。8. 如权利要求7所述的方法,其特征在于,如果所述执行上下文是具有对所 述特定函数的直接调用的非事务上下文,则调用所述普通函数(250)。9. 如权利要求7所述的方法,其特征在于,如果所述执行上下文是具有对所 述特定函数的直接调用的事务上下文,则调用所述事务函数(250)。10. 如权利要求7所述的方法,其特征在于,如果所述执行上下文是具有对所述特定函数的指针调用的非事务上下文,则所述指针调用照常操作(3...

【专利技术属性】
技术研发人员:D卡拉汉VK格罗弗
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

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

1