并发数据结构可线性化错误的定位研究

来源 :中国科学院大学 | 被引量 : 0次 | 上传用户:yzahnig621
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着多核技术的发展,多线程并发程序在现代软件应用中发挥着越来越重要的作用。与传统的顺序程序相比,并发程序将任务分配到多个线程之上并发执行,提高了程序执行效率,也充分发挥了多核技术所带来的优势。  然而,并发程序的执行具有不确定性,即,相同的程序多次执行所得到的输出往往是不同的。这种性质使得程序的错误不容易被检测,并且即使被检测到也不容易重现以及定位。  可线性化是一种重要的并发程序正确性的标准。当前,已有的工作主要致力于基于粗粒度迹模型对并发执行历史的可线性化性质进行检测。然而,这些工作无法进一步对可线性化错误进行分析,进而确定引发错误的根本原因。而基于细粒度模型的错误定位工作不适合应用于大规模测试用例,且这些工作主要针对于一般的并发错误而非可线性化错误。  本文针对并发数据结构可线性化错误的定位问题,设计了一个包含粗粒度与细粒度两个层面的解决方案。  在粗粒度层面,我们的目的是构造一个包含操作数量较少,但足够引发可线性化错误的测试用例。这个工作分为两个阶段:首先,获取一条不可线性化的并发执行历史;然后,在这条执行历史中定位至引发这个可线性化错误的并发操作集合,从而构造目标测试用例。我们还提出了一系列优化措施,以提高错误定位的能力与效率。  在细粒度层面,我们的目的是找出对可线性化错误的产生有着决定性作用的数据竞争。基于细粒度迹模型,我们提出了关键数据竞争序列的概念来刻画程序错误,并构建了一种交叉树模型,其中包含了并发程序所有可能的细粒度执行,每个结点对应一个数据竞争。我们根据每条路径的可线性化性质来标记各个结点,然后说明了如何在其中识别关键数据竞争序列。  基于以上工作,我们开发了两个原型工具,CGVT与FGVT,分别用于粗粒度及细粒度的错误定位。实验结果证明,它们能够对实际的Java程序进行检测及定位,并且有着良好的效率。
其他文献
目前的网络自动拓扑发现多采用SNMP协议实现基于路由表的管理域内逻辑拓扑发现算法。但是,交换机等二层设备越来越多地分布在IP网络中形成微子网段,使得越来越多的网络结构对于
目前,如何对大数据量的纹理图像进行有效、快速的分割已经成为国际图像处理领域的一个重要研究热点。引入有针对性的分割方法,与进行并行处理为这个问题的解决提供了一条有效的
围绕数据立方梯度挖掘的三个关键技术即数据立方梯度挖掘算法、数据立方梯度查询以及数据立方梯度挖掘工具,我们开展了四个方面的研究工作:约束性数据立方梯度挖掘研究、实例
iSCSI可以用硬件和软件实现.Linux下实现iSCSI的源代码是公开的.因为SCSI设备具有平台独立性,这使得SCSI设备可以在不同的操作系统平台之间用iSCSI协议通讯.通过对比Linux和W
随着计算机应用技术的不断发展,基于Web的系统日益成为软件系统开发中采用的主流计算模式。Web应用的安全问题,严重制约了网络应用的推广。需要逐步完善和彻底解决Web应用的安
随着Internet技术的不断发展,用户市场的逐渐成熟,如何更好地利用网络资源,为用户提供经济、合理的组网方案,提高网络运行效率,成为目前因特网建设中迫切需要解决的问题.电信
随着现代数据库应用领域的不断扩大,人们对数据库技术提出了新的更高的要求,特别是实时应用领域的高性能要求是传统数据库技术所无法满足的。80年代中后期以来,随着半导体存储器
学位
通过二维图像实现对真实场景的理解是计算机视觉的主要任务之一,本征图像分解是其中的一个基本问题。观测到的世界可以认为是光线、物体的几何形状与物体表面的材质三者相互作
该文主要在基于散乱点的三维曲面重建算法、曲面有限元网格自动生成工具系统的设计和实现等方面进行了研究和探讨.对于根据散乱点重建网格曲面的问题,该文采用分全局重建和局