多线程程序数据竞争检测和验证方法研究

多线程程序数据竞争检测和验证方法研究

ID:35072282

大小:4.11 MB

页数:77页

时间:2019-03-17

多线程程序数据竞争检测和验证方法研究_第1页
多线程程序数据竞争检测和验证方法研究_第2页
多线程程序数据竞争检测和验证方法研究_第3页
多线程程序数据竞争检测和验证方法研究_第4页
多线程程序数据竞争检测和验证方法研究_第5页
资源描述:

《多线程程序数据竞争检测和验证方法研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、硕士学位论文多线程程序数据竞争检测和验证方法研究RESEARCHONMETHODSOFDATARACEDETECTIONANDVERIFICATIONONMULTITHREADEDPROGRAM杨振哈尔滨工业大学2016年6月国内图书分类号:TP311学校代码:10213国际图书分类号:681密级:公开工学硕士学位论文多线程程序数据竞争检测和验证方法研究硕士研究生:杨振导师:苏小红教授申请学位:工学硕士学科:软件工程所在单位:计算机科学与技术学院答辩日期:2016年6月授予学位单位:哈尔滨工业大学ClassifiedIndex:TP311U.D.C:681Disser

2、tationfortheMasterDegreeinEngineeringRESEARCHONMETHODSOFDATARACEDETECTIONANDVERIFICATIONONMULTITHREADEDPROGRAMCandidate:YangZhenSupervisor:Prof.SuXiaohongAcademicDegreeAppliedfor:MasterofEngineeringSpeciality:SoftwareEngineeringAffiliation:SchoolofComputerScienceandTechnologyDateofDefen

3、ce:June,2016Degree-Conferring-Institution:HarbinInstituteofTechnology哈尔滨工业大学工学硕士学位论文摘要当前,随着计算机多核硬件的飞速发展,多线程并发程序也越来越受到欢迎并被广泛使用。但是由于对共享内存空间访问的隐蔽性以及并发线程执行调度的随机性,导致多线程程序中并发线程之间产生不确定的相互作用和影响,这些都给并发程序的分析带来巨大挑战,而且很容易导致缺陷,而这些缺陷又往往难以调试,软件开发和维护人员需要花费大量的精力来检测和定位这些软件质量问题。数据竞争作为多线程并发程序中常见的一种问题,经常会导致

4、程序不能正常运行,或更为严重地导致程序直接崩溃。数据竞争产生的条件往往都比较隐蔽和苛刻,不仅需要特定的输入,而且还需要特定的线程执行交错。因此,这类问题在并发程序中很难被检测出来。如何有效地检测和验证数据竞争,也成为提高软件可靠性和安全性急需要解决的问题。针对这一问题,本文完成了以下工作:首先,基于静态分析技术找到所有可疑的数据竞争语句对,同时定位出潜在的ad-hoc类型同步相关的信息。其次,利用动态二进制插桩技术监视程序在可疑的数据竞争语句处的行为,结合线程调度技术尽可能地触发隐藏的数据竞争产生条件,同时使用lockset算法和happens-before关系相结合

5、的方法检测和验证可疑的数据竞争。然后,根据静态分析得到的潜在的ad-hoc类型同步信息,在动态执行程序时确认这些ad-hoc类型的隐式同步,尽可能的剔除错误和良性的数据竞争。同时为了提高数据竞争检测的效率,本文还提出了并行化的动态数据竞争检测和验证方法,将大部分的检测和验证逻辑从应用程序线程中分离出来,在单独的检测和验证线程中执行,从而加快整个数据竞争检测和验证的过程。最后,设计并实现了一个动静结合的数据竞争检测工具,从数据竞争检测精度,检测效率和方法扩展性等多方面进行了测试,测试结果表明我们的工具能够有效的检测和验证数据竞争,并且不会对原始程序性能造成很大的影响。关

6、键词:多线程;数据竞争检测;锁集;happens-before;ad-hoc同步;-I-哈尔滨工业大学工学硕士学位论文AbstractCurrently,withthedevelopmentofthecomputermulti-corehardware,multithreadedprogramsarebecomingmoreandmoreprevalentandbeingadoptedwidely.Duetotheuncertaintyoftheaccessestothesharedmemorylocationsandtherandomnessoftheschedul

7、esamongthethreads,itisdifficultandchallengingtoanalyzemultithreadedprograms.Thesoftwaredevelopersandmaintainersneedtospendmassivetimedetectandlocatethesesoftwarequalityproblems.Dataracesareoneofthemaincausesoftheconcurrencybugs.Theyarealwaysleadingtoincorrectexecutionsorserious

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。