首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到19条相似文献,搜索用时 78 毫秒
1.
提出一种面向中断驱动型嵌入式软件的启发式静态数据竞争检测方法,并开发了原型工具H-RaceChecker.给定软件的源代码或目标程序,H-RaceChecker能够自动推断中断优先级状态、中断使能状态和内存访问状态等信息,在此基础上识别出每个程序点处可能的数据竞争,进而通过启发式精化策略对原始分析结果进行危险程度排序,提高人工确认结果的效率.实验验证了该方法的有效性.  相似文献   

2.
中断驱动的嵌入式系统广泛应用于对安全和稳定性要求极高的领域,但因系统设计复杂,运行环境多样等原因,中断不确定性导致的严重故障时有发生,数据竞争是较为棘手的问题之一。已有工作对中断导致的数据竞争检测做了许多尝试,但目前还没有比较易用的解决方案。为了解决这类问题,提出了一种基于控制流图的静态检测方法。该方法通过对源程序进行预处理分析,检测出程序中使用的共享资源和中断使能操作;根据预处理的结果,构建出源程序对应的简要控制流图;通过对简要控制流图的抢占关系分析,得到可能会导致竞争关系的执行序列。实验结果表明,该方法能有效检测出程序中潜在的竞争关系,并指明该潜在竞争的发生路径,帮助软件测试人员对故障进行确认和修复。  相似文献   

3.
在多重中断C程序中,中断嵌套可能会导致一些非期望的交叠执行,从而造成错误的程序执行结果。典型的问题是共享变量引起的数据竞争破坏了程序的原子性。针对此类问题,对多重中断C程序的运行时语义进行建模,根据共享变量的访问给出了一种原子性的定义,提出了相应的数据竞争及原子性检测方法,并采用函数摘要技术缩减静态分析过程中所需遍历的程序状态。最后,设计并实现了一个数据竞争及原子性检测原型工具MIDAC(multiple interruption C program data race and atomicity checker),实验结果表明,该工具能够针对一定规模的实际程序得到很好的检测效果。  相似文献   

4.
静态检测中断驱动程序的数据竞争   总被引:1,自引:0,他引:1  
直接运行于微控制器上的中断驱动程序中可能存在一种重要的程序错误:数据竞争.然而当前主流的数据竞争静态检测技术因其服务于多线程模型程序而不适用.设计简明、易用的中断特征描述语言可以使得竞争检测具有平台无关性;同时,提出了一个流敏感的、上下文敏感的、考虑中断驱动程序原子性、易变性和部分随机性的数据竞争检测算法.该算法具有高效、精确的特点.实验表明,其检测时间与代码规模基本呈线性关系,分析17850行代码仅用时3.6s;同时,相比于基于锁集技术的典型数据竞争检测方法,其准确率平均是后者的2.13倍.  相似文献   

5.
6.
针对数据竞争检测过程中的误报和漏报问题,提出一种静态数据竞争检测方法。首先,使用控制流分析自动构造线程内和线程间函数调用图;然后,收集线程内变量访问事件信息,定义竞争产生条件并分析检测出所有可能的竞争;其次,为了提高检测的准确率,进行别名变量和别名锁的分析降低漏报和误报;最后,通过控制流分析来抽象访问事件之间的时序关系,并结合程序切片技术对访问事件的发生序关系进行判断,以此避免因忽略线程交互带来的误报。依据该方法,使用Java语言在Soot软件分析框架下实现了一个数据竞争检测工具。在实验中,对JGF和IBM Contest基准测试套件中的raytracer和airline等程序进行数据竞争检测,并与目前已有的数据竞争检测算法和工具(HB算法和RVPredict)进行对比。实验结果表明,与HB算法和RVPredict工具相比,该方法检测到的数据竞争总数分别增加了81%和16%,数据竞争检测的准确率分别提升了约14%和19%,有效地避免了数据竞争检测中的漏报和误报现象。  相似文献   

7.
8.
以西门子S7-200系列PLC为基础,介绍了贴标机控制系统的硬件构成和基本工作原理,为达到高速准确完成自动定位贴标,阐述了PLC软件程序中各中断程序在系统中的作用、各个中断何时有效、何时屏蔽以及各中断程序的相互关系,同时对贴标机中使用的伺服驱动作了简要说明。  相似文献   

9.
提出通过ROMBios中断销毁硬盘数据的一种方法,利用该方法,可以顺利地将该硬盘上的数据彻底销毁.给出具体实现过程和汇编语言程序的关键部分,实验证明,初步满足应用的需要.  相似文献   

10.
多线程程序数据竞争的静态检测   总被引:11,自引:0,他引:11  
多线程并发程序的广泛使用带来了更多的数据竞争错误.传统的数据竞争静态检测由于对并发语义和别名信息的保守分析会导致很多假错误.因此,提出了一个精确有效的静态检测框架:分析应用了精确的别名分析并静态模拟了访问事件发生序;为提高分析效率,检测算法提出了一个以对象为中心,结合Escape分析缩小检测范围的检测算法并配合设计了压缩的别名等价类表示.检测框架在一个静态Java编译器JTool上做了实现,对于测试程序取得了很好的分析结果.  相似文献   

11.
针对目前已有的基于深度学习的数据竞争检测方法提取特征单一和准确率低的问题,提出一种基于深度学习的数据竞争检测方法DeleRace,该方法首先利用程序静态分析工具WALA从多个实际应用程序中提取指令、方法和文件等多个级别的特征,对其向量化并构造训练样本数据;然后通过ConRacer工具对真实数据竞争进行判定进而标记样本数据,采用SMOTE增强算法使正负数据样本分布均衡化;最后构建并训练CNN-LSTM深度神经网络进行数据竞争检测.从DaCapo,JGF,IBM Contest,PJBench基准测试程序套件中分别选取26个不同应用领域的基准测试程序进行训练数据样本抽取和数据竞争检测,结果表明DeleRace的数据竞争检测准确率为96.79%,与目前已有的基于深度学习的检测方法DeepRace相比提升了4.65%.此外还将DeleRace与已有的动态数据竞争检测工具(Said和RVPredict)和静态数据竞争检测工具(SRD和ConRacer)进行比较,验证了DeleRace的有效性.  相似文献   

12.
孙家泽  易刚  舒新峰 《计算机工程》2021,47(12):215-220
针对并发程序数据竞争检测时准确率低和开销大的问题,基于Adaboost模型设计并发程序数据竞争语句级检测方法。对多线程并发程序进行插桩操作,记录指令的相关内存信息,并对提取出的指令集做语句级转化处理,利用语句对相关属性特征构建并发程序Adaboost数据竞争检测模型,实现多线程程序数据竞争检测工具ADR。实验结果表明,相比于Eraser、Djit+和Thread Sanitizer工具,ADR能够在降低时间及内存开销的同时,有效提高分类准确率,验证了所提方法的有效性。  相似文献   

13.
数据竞争是共享存储程序中的一类难于调试的错误 .在支持域存储一致性模型的软件 DSM系统 JIAJIA上 ,通过采用汇编代码装配技术来获得程序所读写的共享变量集合的方法 ,实现了基于锁集合的动态数据竞争检测算法 .利用本文方法 ,在 TSP和 Barnes程序中找到了数据竞争情况 ,并根据找到的数据竞争 ,修正了 Barnes中的错误 .实际使用经验表明 ,本文方法易于用户使用 ,达到了实用水平  相似文献   

14.
数据竞争是多线程程序的常见漏洞之一,传统的数据竞争分析方法在查全率和准确率方面难以两全,而且所生成检测报告难以定位漏洞的根源.鉴于Petri网在并发系统建模和分析方面具有行为描述精确、分析工具丰富的优点,提出一种基于Petri网展开的新型数据竞争检测方法.首先,对程序的某一运行轨迹进行分析和挖掘,构建程序的一个Petri网模型,它由单一轨迹挖掘得到,却可隐含程序的多个不同运行轨迹,由此可在保证效率的同时降低传统动态分析方法的漏报率;其次,提出基于Petri网展开的潜在数据竞争检测方法,相比静态分析方法在有效性上有较大提升,而且能明确给出数据竞争的产生路径;最后,对上一阶段检测到的潜在数据竞争,给出基于CalFuzzer平台的潜在死锁重演调度方法,可剔除误报,保证数据竞争检测结果的真实性.开发相应的原型系统,结合公开的程序实例验证了所提方法的有效性.  相似文献   

15.
王旭  陈雨亭 《计算机工程》2012,38(15):35-38,42
在多线程程序中,当2个以上线程在没有顺序约束的条件下访问同一个存储单元时,且其中至少有一个为写访问,则可能会发生数据竞争。为此,提出一种针对X10并行程序的静态数据竞争检测算法,包括源访存对计算、可达访存对计算、时钟同步访存对计算和逃逸访存对计算4个阶段。通过在WALA框架中分析构建程序的调用图,计算源访存对集合,检测出内存访存中可能发生数据竞争的无序对。实验结果表明,该算法可以在不显著增加X10并行程序总体运行时间的情况下,达到比较理想的数据竞争检测效果。  相似文献   

16.
孙全  许蕾  夏昕濛  张卫丰 《软件学报》2019,30(11):3281-3296
安卓系统在移动端操作系统始终占据主导地位,在增强用户体验和提高程序性能的同时,其特有的事件驱动模型和多线程模型也造成了并发缺陷.并发程序中,线程调度的不确定性和难以再现性是并发缺陷检测困难的原因.现有技术主要在动态生成执行路径的基础上进行发生序(happens-before)分析,进而检测安卓应用的并发缺陷,但仍然存在低覆盖率、误报、漏报等问题.结合共享变量分析和约束求解方法实现了安卓应用数据竞争的检测,并实现了检测工具RaceDetector.该工具首先根据安卓系统的特性和数据竞争的定义,通过静态分析抽取相关信息,并进一步使用安卓共享变量分析来提高准确性和性能,继而进行可疑数据竞争分析,得出可疑的数据竞争集合;接着根据每一个可疑的数据竞争候选者,通过约束求解的方法在所有事件调度和线程调度解空间下识别发生序关系,并最终检测出真正的数据竞争.实验部分是从Google Play等来源收集了15个流行的应用APK文件作为数据集,RaceDetector平均报告了340个数据竞争,误报率为13%(44/340).与现有工具EventRacer(默认产生300随机事件触发应用执行,平均检测2个有害数据竞争)相比,RaceDetector能够解析全部源码,覆盖了所有线程调度和事件调度,平均检测出15个有害数据竞争.  相似文献   

17.
随着技术的不断发展,软件系统的非确定性(uncertainty)不断增强,数据竞争是并发系统这一类典型的非确定性软件系统中常见的缺陷.尽管数据竞争静态检测近年来取得了巨大进展,但其面临的重要问题仍然存在.先前的静态技术要么以分析精度为代价达到高扩展性,要么由于高精度分析而导致可扩展性问题.提出一种解决上述矛盾的分段分析...  相似文献   

18.
基于锁集合的动态数据竞争检测方法   总被引:7,自引:0,他引:7  
数据竞争使得共享存储程序难于调试.以前大部分针对共享存储程序的动态数据竞争检测工作都是通过维护发生序来实现.这种方法有一个重要缺点,即针对程序的一种输入,对程序的一次执行进行检测,不能检测出所有的可行数据竞争.文中利用存储一致性模型的框架模型,针对域一致性模型提出了增强发生序概念,并依此得出一种基于锁集合的动态数据竞争检测算法,克服了这个问题.在软件DSM系统JIAJIA上的实现获得了很好的性能,应用平均减速比为3.14.利用该方法,在TSP程序中找到了大量的读写数据竞争的情况.  相似文献   

19.
杨璐  余守文  严建峰 《计算机科学》2017,44(12):135-143
多线程机制以其诸多优势在程序开发中被广泛使用,然而随着多线程软件规模的增长,程序中潜存着许多并发缺陷,最常见的并发缺陷是数据竞争和死锁。目前,针对这些并发缺陷的检测手段都无法处理线程时序的不确定性,无法处理运行时环境对线程时序的影响,同时也不能计算这些并发缺陷发生的概率并根据概率生成其处理优先级。针对以上问题,提出了一种基于二型模糊逻辑的多线程数据竞争检测方法。该方法将传统的多线程时序分析和缺陷检测方法作为预处理,考虑程序运行时环境因素对线程时序的影响,利用二型模糊逻辑和隐马尔科夫模型对待检测程序建模,计算待检测程序在某一系统负载下的时序概率,并根据时序概率生成时序缺陷处理优先级列表供软件开发人员参考。  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号