- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据竞争检测入门文献阅读
2014 /10 /21
LOGO
姚欣洪. 基于线程摘要的C/C++数据竞争检测研究[D].
北京邮电大学, 2011.
基于线程摘要的C/C++数据竞争检测研究
数据竞争是常见的并发程序错误:在共享内存的并发程序中,当
有两个线程同时访问(至少有一个访问是写操作)同一个内存地址,
并且这两个访问缺乏锁同步时,这两个线程将可能发生数据竟争。如
何检测数据竞争一直是计算机技术的热门研究领域,尽管针对数据竞
争检测的研究超过了30年,但是当今的并发程序仍然存在着许多有
害的数据竞争。
这篇文章提出一种检测C/C++数据竞争的算法,根据数据竞争
的定义提出两个线程不可能发生数据竞争的四个条件,在DTS_CPP
框架的基础上实现了数据竞争检测框架。最后对一些实际的例子进
行检测,分析检测结果来证明此方法的有效性。
基于线程摘要的C/C++数据竞争检测研究
文章主要研究内容
【】数据竞争的定义及发生条件
(充分认识数据竞争的条件 )
【】基于函数摘要和线程摘要的的数据竞争检测算法
(扩展DTS_CPP系统,函数摘要-线程摘要-线程访问特征-序列化 )
【】排除法进行数据竞争检测
(根据线程不可能发生数据竞争的条件,对初始化的可能发生数据竞争的
集合刷选、精细 )
基于线程摘要的C/C++数据竞争检测研究
相关研究
静态测试
静态测试通常会将源代码或者中间代码转换成某种中间的数据
结构,如抽象语法树或者控制流图,并组织好程序的符号表,在此基础
上用相应的算法来分析。(数据流分析,抽象解释,符号执行,模
型检测,定理证明,类型推导)
动态测试
动态测试将被测程序在相对真实环境下运行,观察其运行时的行
为、功能、逻辑、输出等属性来发现其可能存在的问题。根据作用
动态测试又可以分为单元测试、集成测试,系统测试以及回归测试等
(插桩模拟、渗透测试)
基于线程摘要的C/C++数据竞争检测研究
竞争条件
当并发程序中不同的线程的执行依赖于某些共享的状态时,就可
能发生竞争条件。所有对于共享状态的访问都必须进行互斥操作,否
则将可能导致有害的不确定状态。
常见的故障类型:
【】时间检查与时间使用产生的竞争条件(TOCTOU )
一个给定的资源的在时间检测和时间利用间存在漏洞的窗口
opendir(filename) 时间窗口
.
.
.
If(stat(filename,dirstat)==0)
return ;
基于线程摘要的C/C++数据竞争检测研究
【】双检锁问题
通常情况下,在实现多线程环境中的“懒初始化”(变量在第一次被
访问时才初始化,以后每次访问都使用第一次初始化的值)时来避免加锁
操作,典型的应用就是单例模式。
双检锁
helper=new Helper()操作包含多个步骤
1) 分配内存
2) 在内存的位置上调川构造函数
3) 将内存地址赋值给helper
基于线程摘要的C/C++数据竞争检测研究
【】不可重入问题导
您可能关注的文档
最近下载
- 2025年护理人员N1进阶N2考试试题及答案 .pdf VIP
- DB21T1342-2021 建筑工程文件编制归档规程.pdf
- Unit-1-Discovering-Useful-Structures-超好用的公开课获奖课件-(.pptx VIP
- 专业技术职务任职资格评审表.doc VIP
- 医疗操作规程.docx VIP
- 湖北省专业技术职务任职资格评审表.docx
- 钒酸铋光催化剂的制备及改性.pdf VIP
- 城市轨道交通列车牵引与制动系统(配实训工单) 实训手册(带答案).docx VIP
- 吊装施工专业技术方案(含计算).doc VIP
- 城市轨道交通车辆维护与检修中职全套完整教学课件.pptx
文档评论(0)