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

数据范围化的动态数据竞争检测制造技术

技术编号:7048313 阅读:183 留言:0更新日期:2012-04-11 18:40
本发明专利技术描述了数据范围化的动态数据竞争检测。公开了带有减小运行时开销的数据范围化能力的动态共享存储器数据竞争检测工具。该工具允许用户使用对库中所提供的作为竞争检测工具的一部分的函数的显式调用来将对存储器位置的分析限制于其感兴趣的堆和/或栈变量。操纵应用程序代码来在所有存储器指令处插入探测,并且与数据竞争检测库链接以执行数据范围化的竞争检测。

【技术实现步骤摘要】
数据范围化的动态数据竞争检测
本专利技术涉及计算机领域,尤其涉及数据竞争检测技术。
技术介绍
对共享存储器的多处理器的并发编程可包括多个线程访问相同数据的能力。该多个线程在多个处理器上、多个逻辑处理器核上、或附连到处理器之间所共享的存储器的其他并行性类别上执行。共享存储器模型是多线程通信的最通常部署的方法。在这些系统中,并发线程可尝试访问以及修改共享存储器中的相同数据。这可导致数据竞争条件,该数据竞争条件可在并发编程和所存储的数据中造成其他不合需要的或潜在的有害影响。当至少两个并发线程访问相同存储器位置而没有同步时,数据竞争在多线程的程序中发生,其中访问中的至少一个是写操作。数据竞争指示编程出错,由于多线程编程的非确定性特征而可能难以隔离该编程出错。对线程的调度是时序敏感的,并且甚至在用相同输入来重复执行并发程序时也难以再现数据竞争。使得事情更困难的是,数据竞争常常导致共享数据结构中的存储器被破坏但不导致直接的程序失败,并且由数据竞争导致的漏洞可能直到并发程序的稍后所执行的部分作为代码的不相关部分中的神秘失败才表明。研究者已尝试开发用于检测并发程序中的数据竞争的自动化工具。静态数据竞争检测技术一般通过推论所有执行路径上的数据竞争来提供并发程序的全面覆盖。然而,静态技术往往对假设过渡估计,这可导致大量被错误检测的竞争。动态数据竞争检测技术比静态技术更精确,但其覆盖限于执行路径并且在运行时期间交错发生。然而,在特定非托管程序中,动态技术常常招致使性能开销衰减多达两百倍的减缓。大量性能开销实际上阻止了对动态数据竞争检测器的大规模采用。
技术实现思路
提供本专利技术内容是为了以简化的形式介绍将在以下具体实施方式中进一步描述的一些概念。本
技术实现思路
并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。公开了带有减小运行时开销的数据范围化能力的动态共享存储器数据竞争检测工具。该工具允许用户使用对库中所提供的作为竞争检测工具的一部分的函数的显式调用来将对存储器位置的分析限制于其感兴趣的堆和/或栈变量。操纵应用程序代码来在所有存储器指令处插入探测,并且与数据竞争检测库链接以执行数据范围化的竞争检测。本专利技术涉及数据范围化的动态数据竞争检测器,该检测器可测试定义的共享存储器位置子集上的数据竞争。与数据竞争检测器一起使用的数据检测方法包括定义开发者选择的目标存储器位置,在该目标存储器位置启动数据竞争检测器,以及监视对该目标存储器位置内的应用程序的存储器访问以供数据竞争。数据竞争检测器应用一算法来监视该目标存储器位置,并在常见锁或同步没有保护该目标存储器位置内的并发访问的情况下发出竞争条件警告。在一个示例中,数据竞争检测器包括执行组件以及库组件。执行组件启动应用程序连同数据竞争检测器。库组件实现数据竞争检测引擎,并提供应用程序接口用于定义目标存储器位置和其他功能。该方法仅监视对所定义的目标存储器位置中的应用程序的存储器访问,因此减小了开销。开发者可定义该目标存储器位置以覆盖其中数据竞争被怀疑的区域。同样,该方法可使用更广泛定义的目标存储器位置集合来重复、或对所定义的目标存储器位置的另一集合重复,直到开发者对所实现的数据竞争漏洞覆盖量满意。附图说明包括、合并在本专利技术书内并构成其一部分的附图提供了对各实施例的进一步理解。附图示出各实施例,并且与说明书一起用于解释本专利技术的原理。其他实施例和各实施例的许多预期优点将随着参考下面的详细描述进行更好的理解而得到认识。附图的元素不一定相对于彼此是比例正确的。相同的附图标记指代对应的类似部分。图1是示出示例计算设备的框图。图2是示出图1的计算设备的多核处理系统的示例的示意图。图3是示出动态地检测在图2的系统上所执行的多线程应用程序中发生的数据竞争的示例方法的框图。图4是示出适于实现图3的方法的示例数据竞争检测器的框图。具体实施方式在以下详细描述中,对附图进行了参考,附图构成了实施例的一部分且在其中作为示例示出了可在其中实践本专利技术的各特定实施例。可以理解,可以使用其它实施例并且可以做出结构上或逻辑上的改变而不背离本专利技术的范围。因此,以下详细描述并不旨在限制,并且本专利技术的范围由所附权利要求来限定。应理解,此处描述的各示例性实施例的特征可相互组合,除非另外具体注明。图1示出了可用作操作环境并且包括诸如计算设备100之类的计算设备的示例性计算机系统。在一基本配置中,计算设备100通常包括具有至少两个处理单元(即,处理器102)的处理器体系结构以及存储器104。取决于计算设备的确切配置和类型,存储器104可以是易失性的(如随机存取存储器(RAM))、非易失性的(诸如只读存储器(ROM)、闪存等)或两者的某种组合。该计算设备可采取若干形式中的一种或多种。这些形式包括个人计算机、服务器、手持式设备、消费电子产品能(诸如视频游戏控制台)或其他设备。计算设备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包括被称为托管的或运行时环境的软件组件。托管环境可被包括为操作系统的一部分或者可在稍后被包括为软件下载。托管环境通常包括针对常见编程问题的预先编码的解决方案以帮助软件开发者创建诸如应用程序等在托管环境中运行的软件程序。另外,计算设备可被配置成运行非托管代码,诸如以诸如特定形式的Basic、C++以及其他的非托管语言建立的应用程序。一般而言,存储器104被组织成包括代码段、栈段以及堆段的供示出的三个段。代码段被配置成存储经编译的计算机程序的代码,它一般包括用户定义的函数以及系统函数。栈是存储供与计算机程序一起使用的数据的存储器段。栈存储为函数内的自动变量分配的数据。数据以后进先出(LIFO)方法被存储在该栈中。堆也是存储供与计算机程序一起使用的数据的存储器段,但被用于动态存储器分配。存储器段的块按任意次序来分配和释放,并且分配的模式以及块的大小直到运行时才知道。栈包括在运行时之前被本文档来自技高网
...
数据范围化的动态数据竞争检测

【技术保护点】
1.一种检测应用程序中的数据竞争的方法,所述方法包括:使用至少一个处理器基于接收到存储器的输入来定义所选择的目标存储器位置;以及使用所述至少一个处理器来监视对所选择的目标存储器位置内的所述应用程序的存储器访问用于数据竞争。

【技术特征摘要】
2010.06.25 US 12/823,7941.一种检测应用程序中的数据竞争的方法,其特征在于,所述方法包括:使用至少一个处理器基于接收到存储器的输入来定义所选择的目标存储器位置,其中所选择的目标存储器位置是少于共享存储器中的全部地址的目标地址子集;修改所述应用程序的应用程序二进制代码以在与所选择的目标存储器位置相关联的存储器访问操作处插入探测函数;以及在运行时期间使用所述至少一个处理器来监视对所选择的目标存储器位置内的所述应用程序的经修改的应用程序二进制代码的存储器访问用于数据竞争。2.如权利要求1所述的方法,其特征在于,所选择的目标存储器位置被包括在所述存储器的堆或栈的其中一个上。3.如权利要求1所述的方法,其特征在于,定义所选择的目标存储器位置包括截取堆分配并将所截取的堆分配定向到所述存储器中的存储器选择机制。4.如权利要求1所述的方法,其特征在于,堆上所选择的目标存储器位置使用与包括malloc、calloc和realloc的标准堆分配例程对应的数据竞争检测库函数来分配。5.如权利要求1所述的方法,其特征在于,栈上所选择的目标存储器位置使用具有作为变量的目标位置的数据竞争检测库函数来分配。6.如权利要求5所述的方法,其特征在于,栈上所选择的目标存储器位置的地址被记录在所述存储器中所存储的表中。7.如权利要求1所述的方法,其特征在于,还包括用所述处理器来执行所述应用程序的应用程序二进制代码。8.如权利要求1所述的方法,其特征在于,对于更广泛定义的目标存储器位置集合重复所述方法。9.如权利要求1所述的方法,其特征在于,监视存储器访问包括如果常见锁或同步没有保护所选择的目标存储器位置内的并发访问,则发出警告。10.如权利要求1所述的方法,其特征在于,监视存储器访问包括使用所述至少一个处理器来将数据竞争检测算法应用于所述应用程序二进制代码。11.一种检测应用程序中的数据竞争的方法,其特征在于,所述方法包括:基于所接收的输入来定义所选择的目标存储器位置,其中所选择的目标存储器位置是少于共享存储器中的全部地址的目标地址子集;修改应用程序的应用程序二进制代码以在与所选择的目标存储器位置相关联的存储器访问操作处插入探测函数;启动目标应用程序的经修改的应用程序二进制代码;以及在经修改的应用程序二进...

【专利技术属性】
技术研发人员:Y·张H·沙菲K·S·赛德奇
申请(专利权)人:微软公司
类型:发明
国别省市:US

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

1