[发明专利]在事务存储器系统中高效地定位事务代码块有效
申请号: | 200880018481.1 | 申请日: | 2008-05-30 |
公开(公告)号: | CN101681293A | 公开(公告)日: | 2010-03-24 |
发明(设计)人: | D·卡拉汉;V·K·格罗弗 | 申请(专利权)人: | 微软公司 |
主分类号: | G06F12/00 | 分类号: | G06F12/00 |
代理公司: | 上海专利商标事务所有限公司 | 代理人: | 陈 斌;钱静芳 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 事务 存储器 系统 高效 定位 代码 | ||
背景
软件事务存储器(STM)是类似于数据库事务的、用于在并发计算中控制 对共享存储器的访问的并发控制机制。事务存储器的上下文中的事务是执行对 共享存储器的一系列读取和写入的代码片段。STM用作传统锁定机制的替换。 程序员在代码块周围放置声明性注释(例如,原子的)以指示这些代码块所需 要的安全特性,并且系统自动保证该块相对于其它受保护的代码区域原子地执 行。软件事务存储器编程模型防止了基于锁的优先级倒置和死锁问题。
软件事务存储器(STM)系统可以接受某些顺序程序并且允许使用事务来同 时(例如并行地)执行这些程序的各部分。这些顺序程序的源代码通常是由程序员 通过使用各种类型的编程语言中的一种来编写。源代码通常被封装在包含稍后由计 算机执行的逻辑的一个或多个函数中。此处宽泛地使用术语“函数”来涵盖函数、 方法、过程、语句块和/或由计算机执行的逻辑的其它部分。有了软件事务存储器 系统,可根据事务上下文来调用的每一个函数都必须具有两个版本,一个可根据事 务来调用的版本和一个可根据非事务来调用的版本。确定要调用函数的哪一个版本 是上下文相关的。该确定必须在对虚函数的调用的运行时或通过函数指针来完成。
概述
公开了用于在事务存储器系统中创建和/或定位事务代码块的各种技术和方 法。诸如软件开发者等用户可以用标识符来装饰特定函数以便指示该特定函数是事 务安全的。然后创建软件应用程序中的被标记为事务安全的每一个函数的普通版本 和事务版本。创建未被标记为事务安全的每一个函数的普通版本。对于被标记为事 务安全的每一个函数的普通版本,普通版本中的存根指针(stub pointer)指向事务 版本。然后取决于应用程序上下文来调用函数的适当的版本。
在一个实现中,编译器生成函数的事务和非事务版本以便与事务存储器系统 一起使用。在编译时,为软件应用程序中的每一个函数分配存根指针。对于未被标 记未事务安全函数的每一个相应的函数,生成相应函数的普通版本,并且用运行时 出错处理例程的入口点来填充存根指针。对于被标记为事务安全函数的每一个相应 的函数,创建是事务安全的相应函数的普通版本和事务版本的代码。然后,在普通 版本的存根指针中,填充到事务版本的入口点。在事务版本的存根指针,填充到运 行时出错处理例程的入口点。
提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的 一些概念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不 旨在用于帮助确定所要求保护的主题的范围。
附图简述
图1是一个实现的计算机系统的图示。
图2是在图1的计算机系统上操作的一个实现的事务存储器应用程序的图示。
图3是图1的系统的一个实现的高级处理流程图。
图4是图1的系统的一个实现的处理流程图,其示出了作为编译和/或链接过 程的一部分的、在使用代码生成器来生成事务和非事务函数的代码并填充存根指针 时所涉及的各阶段。
图5是图1的系统的一个实现的示图,其示出了用于取决于执行上下文来选 择要调用的函数的适当的版本的决策树。
图6是一个实现的逻辑图,其示出了两个假想函数,一个仅具有普通版本而 另一个具有普通版本和事务版本。
详细描述
为促进对本发明的原理的理解,现将对附图中所示的各实施例加以参考,同 时也将用具体语言描述它们。不过,需要理解的是,并无意由此作出范围上的限制。 对所述实施例的任何改变和进一步更改,以及在此所述的原理的进一步应用都可以 预期将是本领域技术人员通常能想到的。
本系统可以在一般上下文中被描述为事务存储器系统,但是本系统还用于除 此之外的其它目的。在一个实现中,此处所描述的一个或多个技术可被实现为诸如 微软.NET框架等框架程序内的、或来自为开发者提供开发软件应用程序的平台 任何其它类型的程序或服务的特征。在另一实现中,此处所描述的一个或多个技术 被实现为涉及开发在并发环境中执行的应用程序的其它应用程序的特征。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200880018481.1/2.html,转载请声明来源钻瓜专利网。