数据竞争检测入门文献阅读.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 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++数据竞争检测研究 【】不可重入问题导

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档