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

静态数据竞争检测和分析制造技术

技术编号:7843126 阅读:172 留言:0更新日期:2012-10-13 01:32
本发明专利技术涉及静态数据竞争检测和分析。对多线程应用的至少一部分进行静态数据竞争分析以标识多线程应用中的潜在的数据竞争缺陷。静态数据竞争分析包括组件内静态分析以及组件间静态分析。给定组件的组件内静态分析包括标识组件中的一组存储器访问操作。对于该组存储器操作中的至少一个的每一个,该分析确定是否存在与存储器访问命令相关联的数据竞争保护元件。

【技术实现步骤摘要】
静态数据竞争检测和分析
本专利技术涉及数据竞争检测和分析,尤其涉及静态数据竞争检测和分析。
技术介绍
在有同时操作的多个处理器的计算系统上执行多线程处理。通常,多个线程可以共享相同的存储器。然而,以共享存储器运行的多线程应用通常可导致通常难以通过测试来发现的轻微的数据竞争缺陷。例如,数据竞争缺陷可源自于未能在访问共享存储器前获取锁、或者未能在无锁或低锁算法中将存储器排序语义考虑在内。数据竞争缺陷可导致进程访问不一致的数据,从而负面地影响多线程应用的功能。已经开发了许多动态竞争检测技术。然而,按其本质,“动态”竞争检测包括实际运行应用来检测正在执行的应用的行为,这可能是不切实际的。也已开发了静态竞争检测技术,该技术不要求执行应用,而是要检查多线程应用的代码。这种静态竞争检测技术通常是计算密集的,和/或通常依赖于代码中的注释来标识潜在的数据竞争问题。
技术实现思路
这里描述的至少一个实施例涉及对多线程应用的至少一部分进行静态数据竞争分析以标识多线程应用中的潜在的数据竞争缺陷。静态数据竞争分析包括组件内静态分析以及组件间静态分析。给定组件的组件内静态分析包括标识组件中的一组存储器访问操作。对于该组存储器访问操作中的至少一个的每一个,该分析确定是否存在与存储器访问命令相关联的数据竞争保护元件。在一个实施例中,如果操作被锁保护,这在其本身中足以被视为数据竞争保护元件。此外,在另一实施例中,如果存储器访问是易失性的存储器访问(即,具有被编译器和处理器两者所重视的显式排序语义的存储器访问),该易失性特征也足以被视为数据竞争保护元件。提供本
技术实现思路
以便以简化形式介绍将在以下具体实施方式中进一步描述的一些概念。本
技术实现思路
并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。附图说明为了描述能够获得上述和其它优点和特征的方式,各实施例的更具体的描述将通过参考各附图来呈现。可以理解,这些附图只描绘了示例实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释各实施例,在附图中:图1示出了可以用来利用此处所描述的各实施例的示例计算系统;图2抽象地示出静态地分析具有多个组件的代码的计算环境;图3示出用于执行代码的静态分析的方法的流程图;图4示出用于执行组件内分析的方法的流程图;图5示出用于执行组件间静态分析的方法的流程图。具体实施方式按照这里描述的实施例,对多线程应用的至少一部分的静态数据竞争分析标识了多线程应用中的潜在的数据竞争缺陷。静态数据竞争分析包括组件内静态分析以及组件间静态分析。首先,将参考图1来描述关于计算系统的一些引导性讨论。然后,将参考图2至5来描述静态数据竞争分析的实施例。首先,参考图1来描述关于计算系统的介绍性讨论。计算系统现在越来越多地采取多种多样的形式。计算系统可以例如是手持式设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统,或者甚至通常不被视为计算系统的设备。在本说明书以及权利要求书中,术语“计算系统”被广义地定义为包括任何设备或系统(或其组合),该设备或系统包含至少一个物理有形的处理器以及其上能含有可由处理器执行的计算机可执行指令的物理有形的存储器。存储器可以采取任何形式,并可以取决于计算系统的特性和形式。计算系统可以分布在网络环境中,并可包括多个组分计算系统。如图1所示,在其最基本的配置中,计算系统100通常包括至少一个处理单元102和存储器104。存储器104可以是物理系统存储器,该物理系统存储器可以是易失性、非易失性、或两者的某种组合。术语“存储器”在此也可用来指诸如物理存储介质等非易失性大容量存储。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。如此处所使用的那样,术语“模块”或“组件”可以指在计算系统上执行的软件对象或例程。此处所描述的不同组件、模块、引擎,以及服务可以实现为在计算系统上执行的对象或进程(例如,作为分开的线程)。在随后的描述中,参考由一个或多个计算系统执行的动作描述了各实施例。如果这样的动作是以软件实现的,则执行动作的相关联计算系统的一个或多个处理器响应于已经执行了计算机可执行指令来引导计算系统的操作。这样的操作的示例涉及对数据的操纵。计算机可执行指令(以及被操纵的数据)可以存储在计算系统100的存储器104中。计算系统100还可包含允许计算系统100例如通过网络110与其他消息处理器通信的通信信道108。计算系统还可以包括显示器112,显示器可显示计算系统的用户可以与之接口的一个或多个用户界面。这里描述的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如例如一个或多个处理器和系统存储器等计算机硬件,如以下更详细讨论的。这里描述的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本专利技术的各实施例可包括至少两种显著不同的计算机可读介质:计算机存储介质和传输介质。计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算机可读介质的范围内。此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动传输到计算机存储介质(或反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传输到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质。因而,应当理解,计算机存储介质可被包括在还利用(或甚至主要利用)传输介质的计算机系统组件中。计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。本领域的技术人员将理解,本专利技术可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由本文档来自技高网
...
静态数据竞争检测和分析

【技术保护点】

【技术特征摘要】
2011.03.02 US 13/039,0901.一种对多线程应用的至少一部分执行静态数据竞争分析以便标识多线程应用中的潜在的数据竞争缺陷的方法,所述方法包括:对所述多线程应用的至少多个组件执行组件内静态分析的动作,所述组件内静态分析包括对于所述多个组件中至少一些组件中的每一个的以下动作:标识组件内的一组存储器访问操作的动作;以及对于所述组件中的该组存储器访问操作中的每一个存储器访问操作,执行以下动作:确定是否有与所述存储器访问操作相关联的数据竞争保护元件的动作,其中所述数据竞争保护元件包括锁和易失性存储器访问;以及对所述多个组件执行组件间静态分析的动作。2.如权利要求1所述的方法,其特征在于,所述执行组件间静态分析的动作包括对于相应组件的至少一个参数中的多个组件中的至少一些组件的每一个的以下动作:确定调用者组件对所述组件的参数执行的操作类型的动作;确定相关联的被调用者组件对所述组件的参数执行的操作类型的动作;以及协调两种类型的操作的确定以标识操作是否针对数据竞争被保护的动作。3.如权利要求2所述的方法,其特征在于,所述协调动作将来自被调用者组件的代码内联到调用者组件的代码中。4.如权利要求2所述的方法,其特征在于,所述协调动作不解除虚拟函数调用的虚拟化。5.如权利要求1所述的方法,其特征在于,给定存储器访问的数据竞争保护元件是该存储器...

【专利技术属性】
技术研发人员:E·L·艾勒布雷希特
申请(专利权)人:微软公司
类型:发明
国别省市:

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

1