ISSN 1000-1239 CN 11-1777/TP

计算机研究与发展 ›› 2014, Vol. 51 ›› Issue (8): 1748-1763.doi: 10.7544/issn1000-1239.2014.20130123

• 软件技术 • 上一篇    下一篇

动态容忍和检测非对称数据竞争

王文文1,2,武成岗1,Paruj Ratanaworabhan3,远 翔1,2,王振江1,李建军1,冯晓兵1   

  1. 1(计算机系统结构国家重点实验室(中国科学院计算技术研究所) 北京 100190);2(中国科学院大学 北京 100049);3(农业大学工程学院 泰国曼谷 10900) (wangwenwen@ict.ac.cn)
  • 出版日期: 2014-08-15
  • 基金资助: 
    基金项目:国家“八六三”高技术研究发展计划基金项目(2012AA010901);国家自然科学基金青年科学基金项目(61100011);国家自然科学基金杰出青年科学基金项目(60925009)

Dynamically Tolerating and Detecting Asymmetric Races

Wang Wenwen1,2, Wu Chenggang1, Paruj Ratanaworabhan3, Yuan Xiang1,2, Wang Zhenjiang1, Li Jianjun1, Feng Xiaobing1   

  1. 1(Key Laboratory of Computer System and Architecture (Institute of Computing Technology, Chinese Academy of Sciences), Beijing 100190);2(University of Chinese Academy of Sciences, Beijing 100049);3(Faculty of Engineering, Kasetsart University, Bangkok, Tailand 10900)
  • Online: 2014-08-15

摘要: 非对称数据竞争是数据竞争中一种常见的类型.当一个线程在临界区内访问某个共享变量,另外一个线程在临界区外或不同的临界区内同时也访问这个共享变量时,就触发了非对称数据竞争.多线程程序中的非对称数据竞争往往是有害的.为了解决非对称数据竞争引入的问题,提出了ARace.它使用共享变量保护和写缓冲区来动态容忍和检测非对称数据竞争.其中,共享变量保护用于保护临界区内只读和先读后写的共享变量,防止这些变量在临界区外被修改;写缓冲区用于缓存临界区内对共享变量的写操作.ARace不仅可以容忍临界区内和临界区外之间的非对称数据竞争,还可以对并发临界区之间的非对称数据竞争进行检测.ARace既不依赖程序源代码和编译器的支持,也不依赖额外硬件的支持.此外,还提出了一种通过动态二进制插桩技术实现ARace的方法.实验结果表明,ARace在保证容忍和检测非对称数据竞争的同时,并未引入很大的性能开销和内存开销.

关键词: 非对称数据竞争, 容忍和检测, 写缓冲区, 页保护, 动态二进制插桩

Abstract: Asymmetric races are a common type of data races. They are triggered when a thread accesses a shared variable in a critical section, and another thread accesses the same shared variable not in any critical section, or in a critical section guarded by a different lock. Asymmetric races in multi-threaded programs are usually harmful. To solve the problem introduced by asymmetric races, ARace is proposed. ARace utilizes shared variable protecting and write buffer to dynamically tolerate and detect asymmetric races. Shared variable protecting is used to protect shared variables that are read-only and read-before-write in critical sections, and these shared variables should not be modified out of critical sections; write buffer is used to buffer the writing operations to shared variables in critical sections. ARace can not only tolerate asymmetric races triggered by shared variable accesses in and out of critical sections, but also detect asymmetric races triggered by shared variable accesses in concurrent critical sections. ARace can be directly applied to binary code and requires neither additional compiler support nor hardware support. In addition, an implementation based on dynamic binary instrumentation is also proposed. The experimental results demonstrate that ARace guarantees the tolerance and detection of asymmetric races while incurring acceptable performance and memory overhead.

Key words: asymmetric race, tolerating and detecting, write buffer, page protecting, dynamic binary instrumentation

中图分类号: