基于共享变量访问频度的多线程程序数据竞争检测方法研究

来源 :华中科技大学 | 被引量 : 0次 | 上传用户:nianlanzhen
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着多核体系结构的崛起,多线程编程目前已经广泛使用到多个领域,如科学计算、桌面应用程序、网络服务器和移动设备。然而,多线程程序设计也给编程人员带来新的挑战和问题。数据竞争是多线程编程中一类常见的错误,开发人员由于没有合理使用同步保护机制造成的这种错误故障十分普遍。基于Happens-before关系的数据竞争动态检测算法能够检测程序实际运行产生的数据竞争,无误报产生,但是存在着检测开销过大、无法实时在线部署等问题。  对大量的程序共享变量使用情况监测显示,共享变量访问存在着不一致性,并且越是高频访问的共享变量,其发生数据竞争的概率越小,因为一旦存在数据竞争很容易在早期被程序员发现和修复。基于共享变量访问频度的数据竞争检测算法通过对共享变量访问频度进行统计,结合共享变量的访问频度与数据竞争发生概率之间的关联性,为拥有不同访问频度特征的共享变量分派不同的采样率,从而对不同的变量实施不同采样率的基于Happens-before关系的数据竞争动态检测,可以有效降低动态数据竞争的检测开销。该方法特别适用于长时间作业应用的在线实时动态竞争检测部署,尤其适用于共享变量访问频度不对称场景。  实验结果表明,对于DaCapo基准测试程序套件,基于共享变量访问频度的自适应采样动态检测算法,相比单纯地对所有变量使用相同采样率的检测算法,数据竞争检测准确率基本相当,但能有效减少检测算法执行对基准测试程序带来的时间下降和最大内存使用。由此可以看出,利用基于共享变量访问频度的自适应采样动态检测算法,能够有效降低检测开销,解决传统检测方法难以实时在线检测部署的问题。
其他文献
随着计算机应用技术的不断发展,计算模式从集中式转向了分布式,尤为典型的是C/S结构(Client/Server),在上个世纪八十年代及九十年代初得到广泛应用。但随着企业规模的日益扩
传统的边界防火墙存在单点失效和性能瓶颈的局限性,而且依赖于网络的拓扑结构实施其安全策略。在网络高速发展的今天,传统防火墙的局限性越发显得明显。分布式防火墙正是在这样
随着无线局域网得到越来越广泛的应用,研究无线宽带接入互联网的基础理论与关键技术具有重大的科学和经济意义,提供高性能的无线互联网传输协议是实现无线宽带接入互联网要解
在存储系统中,CPU的处理速度远大于磁盘等I/O设备的读写速度,两者间的速度不匹配严重影响了系统整体性能。预取技术能够有效地弥补I/O设备与CPU之间的速度差异,因此被广泛应用。
网格技术将所有可用于共享的资源(例如,计算机、高性能设备、昂贵仪器、存储设备、科学数据、软件、数据库等)通过网络连接起来,并将它们转化成一种随处可得的、可靠的、标准
相对于传统的磁质机械硬盘,基于闪存的固态硬盘具有更高的读写速度、更低的能耗、更好的抗震性和更低的噪音。因此,固态硬盘正越来越多地被运用在计算机系统中。但是,因为固态硬
语音识别(speech recognition)是机器通过识别和理解过程把人类的语音信号转变为相应的文本或命令的技术。其根本目的是研究出一种具有听觉功能的机器,这种机器能直接接受人的
应用系统对海量存储技术的要求越来越高,经典的基于块访问接口的SAN和基于文件访问接口的NAS系统已力不从心,而新出现的基于对象接口的网络存储技术以高性能、高可扩展性、易管
嵌入式设备能与用户亲密接触,最重要的因素就是它必须能提供非常友好的用户界面、图像界面和灵活的控制方式。这方面的要求使得嵌入式软件设计者要在图形界面的设计上多下功
随着数字化技术的飞速发展,数字视频信号的传输技术更是受到人们的关注。相比较其它类型的信息传输如文本和数据,视频通信需要占用更多的带宽资源,因此为了实现在带宽受限的条件