基于Adaboost 模型的并发程序数据竞争语句级检测
2021-12-20孙家泽舒新峰
孙家泽,易 刚,舒新峰
(1.西安邮电大学 计算机学院,西安 710121;2.西安邮电大学 陕西省网络数据分析与智能处理重点实验室,西安 710121)
0 概述
随着计算机硬件技术的更新迭代,多核处理器以及众核处理器[1]被广泛应用,越来越多的开发人员使用并发编程来提高程序的性能,提升了程序的运行速度、吞吐量和CPU 利用率。然而,并发程序内部存在并发性和不确定性,这会导致并发程序出现死锁[2]、数据竞争[3]、原子性违背[4]、顺序违背[5]等难以检测和修复的问题。数据竞争往往是引发其他并发问题的根本原因,在所有的并发缺陷问题中占较大比例,也是目前研究最多的一类问题[2]。如何有效地构建多线程数据竞争检测模型、设计或改进数据竞争定位算法以及准确识别多线程程序中的安全故障,是多线程并发程序安全性质量保障亟待解决的问题,其影响到多核处理器在各个领域的普及与应用。
针对数据竞争检测问题,国内外已有较多研究成果。在动态检测方面,Djit+[6]基于发生序关系方法,使用向量时钟对数据竞争进行分析,同时还包括FastTrack[7]、LOFT[8]和基于锁集的检测工具Eraser[9]。在静态检测方面,常用的检测工具有RacerX[5]、LOCKSMITH[10]和RELAY[11]。此外,蔡彦等提出一种基于采样的数据竞争检测方法来降低检测的开销,并开发了检测工具AtexRace[12],孙家泽等提出一种基于随机森林的数据竞争指令级检测方法,并实现了AIRaceTest 检测工具[13]。然而,这些检测方法中仍存在误报、漏报以及开销大等问题。
本文基于数据挖掘分类模型可高效处理大量数据的特点,提出一种以语句对特征作为样本集建立Adaboost[14]分类模型的方法,实现多线程程序数据竞争检测工具ADR。……
