多线程程序中数据竞争故障的动态检测技术研究

来源 :华中师范大学 | 被引量 : 0次 | 上传用户:liuyw0825
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着支持多线程技术的操作系统与多核处理器技术的普及,多线程技术不再是一个很遥远的话题。我们在享受着Microsoft Word编写文档与Netscape Firefox浏览网页带来便利的同时,也希望构造自己的多线程应用,但是多线程程序设计相对传统的程序设计而言还是很困难并且容易出错。在多线程程序设计中,很容易因为没有使用同步保护机制从而导致产生数据竞争故障,但是该故障很难通过一两次运行程序而发现,并且纵使发现有数据竞争故障,针对该故障的调试信息也非常难以获取。因此,研究如何有效的检测多线程程序中数据竞争故障并根据被测程序的实际情况给予程序设计人员有效的故障信息,是一个非常值得研究的问题。目前,有很多专家学者在数据竞争故障的检测方面做出了不少工作,其中利用lockset算法来检测数据竞争故障是该领域的主流做法,因而从lockset算法派生出Racer算法、Goodlock算法等。由于基于lockset算法的检测是采用了动态测试方法,即需要运行待测程序,所以本文引入面向方面编程技术(AOP,Aspect OrientedProgramming),对待测程序设置切入点来在线监测待测程序的运行状态,通过切入点能够更为准确的获取待测程序运行时的现场数据,并通过定义多线程程序变量状态图和变量集合用于对lockset算法进行有效的补充,在此基础上提出了基于变量状态图与锁集的数据竞争故障动态检测算法,并通过该算法对数据竞争故障进行了有效检测。本文的主要工作如下:(1)研究了面向方面编程技术在程序动态测试中的应用研究了面向方面编程技术的原理、特点与功能,特别是面向方面编程技术中的切入点设置问题,包括针对待测方法的切入点以及对变量的构造函数切入点的设置问题,以及在程序动态检测中的应用方式。(2)基于lockset算法的数据竞争故障检测方法的研究针对lockset算法所存在的问题,定义了一种用于描述多线程程序中变量状态的变量状态图和记录程序运行时变量的变量集合,通过变量状态图使原有lockset检测算法降低误报率,通过变量集合使原有lockset检测算法支持运行时期的变量分配,即动态内存变量,在此基础上提出基于变量状态图与锁集的数据竞争故障动态检测算法。该算法减少了误报情况的发生,使检测更为有效。给出了多线程程序中数据竞争故障动态检测的系统框架。(3)实验验证与结果分析利用AspectJ完成对待测程序的切入点设置与运行事件获取工作,利用Java和AspectJ实现了多线程程序中数据竞争故障检测系统原型。以多线程程序访问变量(包括读写操作)为例,使用本文提出的多线程数据竞争故障检测方法进行了实验,发现该方法较之lockset算法减少了误报的情况,使检测更为有效,并且提供了lockset算法所不能提供的故障现场信息。
其他文献
伴随着信息技术的迅猛发展,使得各个领域的数据量激增,但是所能获得的有效信息却是有限的。如何在海量的数据中获取有价值的、潜在的信息,是当代人所面临的共同课题。数据挖
随着网络技术的发展和计算机应用的深入,分布式系统已经成为各个行业主流的软件系统。分布式系统具有诸多优点,但是在开发时面临诸多的挑战,这些挑战包括:如何使用户方便地访
网络在现在人们的日常生活中已经成为不可或缺的工具,通过网络寻找自己想要的信息资源已经变成人们获取信息最快捷和简便的方式,但是海量的网络资源对于用户来说是非常痛苦的
随着局域网和Internet的飞速发展,分布式通信技术已成为当今分布式计算领域的研究热点之一。分布式异步消息处理就是在分布式通信环境下,发送端发出请求消息后不必等待接收端
集装箱运输是现代物流业的主要方向,也同时是铁路货物运输的发展方向,在现有的铁路集装箱运输管理信息系统中,由于采用的追踪技术绝大部分是简单的一对一通信模式,无法在任意
虚拟植物是利用虚拟现实技术在计算机上模拟植物在三维空间中的生长发育过程,具有可视化的功能。虚拟植物根系研究是虚拟植物研究的重要组成部分,人们已经做了大量的工作,建
随着工作流技术的不断发展,开源工作流产品功能日趋完善,越来越多的软件企业和客户已经意识到,自己去研发一个工作流引擎或平台,已经毫无竞争优势和价值优势,甚至有可能是成
生态化污水处理技术作为一项污水资源再生的新兴技术,可以有效的实现生活污水的生态化、无害化处理,已经逐步成为近年来国内外污水处理领域研究的热点。本课题针对一体化MBR
真实感自然场景模拟技术一直以来都是计算机图形学领域的热点研究问题,而真实感草地场景模拟技术则是其中一个重要的组成部分。本文在总结国内外研究成果的基础上,研究并实现
SVM是统计学习的一种,是在统计学习理论基础上发展起来的一种新型的学习机器。目前,SVM被看作是解决分类问题和回归问题的强有力的工具,并已经是机器学习领域继神经网络后新