基于单变量访问序模式的中断数据访问冲突检测方法及装置制造方法及图纸

技术编号:24168311 阅读:21 留言:0更新日期:2020-05-16 02:08
本发明专利技术实施例提供了一种基于单变量访问序模式的中断数据访问冲突检测方法及装置。所述方法包括:获取多个源文件;对每个所述源文件的函数进行可达访问分析,生成每个所述源文件的可达访问图;使用所述多个源文件的函数调用关系和各所述源文件的函数摘要,更新各所述可达访问图;遍历各更新后的可达访问图,匹配单变量访问序模式,得到中断数据访问冲突检测结果。本发明专利技术实施例对单文件进行独立分析,避免了跨文件的分析时在不同文件交替分析,减小了内存占用的峰值,可适用于大规模程序。

The method and device of interrupt data access conflict detection based on single variable access sequence pattern

【技术实现步骤摘要】
基于单变量访问序模式的中断数据访问冲突检测方法及装置
本专利技术涉及计算机软件测试与验证
,特别是一种基于单变量访问序模式的中断数据访问冲突检测方法及装置。
技术介绍
中断驱动的嵌入式软件已广泛应用于航天、医疗、IoT等领域,这些领域对安全性的要求高,软件失效或故障都可能产生灾难性后果。中断数据访问冲突是中断驱动的嵌入式程序的一种并发缺陷,它出现在主程序与中断,或者中断与中断之间对同一共享数据进行访问而导致非预期的异常行为时。这些异常行为可能导致关键数据被意外修改,严重时致软件失效,甚至出现灾难性后果。但中断数据访问冲突出现概率小,并且由于并发的不确定性往往难以复现,是航天、汽车、IoT等嵌入式软件中的关键可信问题之一。对中断数据访问冲突的检测方法,已有一些研究工作。专利CN102063328A公开了一种用于检测中断驱动型程序数据竞争的系统,专利CN103778062A公开了一种基于抽象解释的多中断程序数据访问冲突检测方法,InternationalSymposiumonSoftwareTestingandAnalysis(ISSTA2017)中Wang等人的“AutomaticDetectionandValidationofRaceConditionsinInterrupt-DrivenEmbeddedSoftware”提出一个结合检测和验证的框架,使用静态分析生成潜在的数据竞争,再使用虚拟仿真平台动态验证。以上几项工作都是以检测数据竞争作为目标,会产生大量误报。软件学报(2016年第3期)中“基于变量访问序模式的中断数据竞争检测方法”指出,中断驱动型程序中的数据竞争大多数都是良性的,并提出了刻画中断数据访问冲突问题的7种缺陷模式。其中,单变量访问序模式是最重要的缺陷模式之一,指的是同一变量的3次连续并发访问中的4种访问序组合(RWW,WWR,RWR,WRW)会造成数据访问冲突。该文献针对单变量访问序模式,提出了基于抽象解释的静态检测方法,将3次访问序的路径匹配问题转换为一个可达访问集的迭代求解问题,并对每个函数的迭代求解结果进行摘要以避免迭代中的重复分析,可有效检测出违反单变量访问序模式的中断数据访问冲突。但该方法还存在以下问题:1)当存在调用关系的函数分散在不同的源文件时,过程间分析时需要重复、频繁地在不同文件中交替分析,存在性能开销大的问题;2)采用的函数摘要是一种可达访问的完整摘要,摘要信息冗余,内存有限时摘要命中率低,更新频繁;3)在极端情况下,会将所有源代码都加载在内存中分析,遇到大规模程序时,峰值内存消耗大,分析性能降低明显。
技术实现思路
本专利技术解决的技术问题是:克服现有技术中的不足,提供了一种基于单变量访问序模式的中断数据访问冲突检测方法及装置。本专利技术的技术解决方案是:为了解决上述技术问题,本专利技术实施例提供了一种基于单变量访问序模式的中断数据访问冲突检测方法,包括:获取多个源文件;对每个所述源文件的函数进行可达访问分析,生成每个所述源文件的可达访问图;使用所述多个源文件的函数调用关系和各所述源文件的函数摘要,更新各所述可达访问图;遍历各更新后的可达访问图,匹配单变量访问序模式,得到中断数据访问冲突检测结果。优选地,在所述获取多个源文件之后,还包括:收集所述多个源文件分别对应的被调用函数的函数摘要;所述函数摘要为可达访问图的出口结点的可达访问集。优选地,所述对每个所述源文件的函数进行可达访问分析,生成每个所述源文件的可达访问图,包括:配置主程序入口、中断入口和中断优先级;分别对所述主程序入口的函数和所述中断入口的函数涉及的源文件,以及各所述源文件中的函数进行不考虑函数调用的可达访问分析,生成各所述可达访问图。优选地,在所述使用所述多个源文件的函数调用关系和各所述源文件的函数摘要,更新各所述可达访问图之后,还包括:使用所述函数摘要更新调用函数所在的可达访问图;在对各所述可达访问图进行更新时,记录所有函数摘要被调用前的程序点的可达访问集;采用所述可达访问集,作为所述被调函数的可达访问图的入口值再更新,使所有可达访问图达到稳定状态。优选地,所述遍历各更新后的可达访问图,匹配单变量访问模式,得到中断数据访问冲突检测结果,包括:通过所述中断入口和所述中断优先级,对被打断的主函数和中断函数进行匹配;遍历主函数的可达访问图,计算出同一变量的连续两次访问,再匹配所述中断函数中的内存访问,生成数据访问冲突序。为了解决上述技术问题,本专利技术实施例提供了一种基于单变量访问序模式的中断数据访问冲突检测装置,包括:源文件获取模块,用于获取多个源文件;可达访问图生成模块,用于对每个所述源文件的函数进行可达访问分析,生成每个所述源文件的可达访问图;可达访问图更新模块,用于使用所述多个源文件的函数调用关系和各所述源文件的函数摘要,更新各所述可达访问图;检测结果获取模块,用于遍历各更新后的可达访问图,匹配单变量访问序模式,得到中断数据访问冲突检测结果。优选地,所述装置还包括:函数摘要收集模块,用于收集所述多个源文件分别对应的被调用函数的函数摘要;所述函数摘要为可达访问图的出口结点的可达访问集。优选地,所述可达访问图生成模块包括:入口优先级配置单元,用于配置主程序入口、中断入口和中断优先级;可达访问图生成单元,用于分别对所述主程序入口的函数和所述中断入口的函数涉及的源文件,以及各所述源文件中的函数进行不考虑函数调用的可达访问分析,生成各所述可达访问图。优选地,还包括:可达访问图更新模块,用于使用所述函数摘要更新调用函数所在的可达访问图;可达访问集记录模块,用于在对各所述可达访问图进行更新时,记录所有函数被调用前的程序点的可达访问集;可达访问图再更新模块,用于采用所述可达访问集,作为所述被调函数的可达访问图的入口值再更新,使所有可达访问图达到稳定状态。优选地,所述检测结果获取模块包括:函数匹配单元,用于通过所述中断入口和所述中断优先级,对被打断的主函数和中断函数进行匹配;访问冲突序生成单元,用于遍历主函数的可达访问图,计算出同一变量的连续两次访问,再匹配所述中断函数中的内存访问,生成数据访问冲突序。本专利技术与现有技术相比的优点在于:1、独立分析每个文件,分析完所有文件后再使用函数摘要合并更新的方法,避免了存在跨文件的分析时在不同文件交替分析,减小了内存占用的峰值;2、函数摘要仅使用可达访问图的出口结点的可达访问值,占用内存小,可同时载入大量的函数摘要,减少了因内存不足而频繁更换内存中的摘要造成的时间消耗;3、每个函数的可达访问图都作为完全独立的模块,可灵活地载入内存或者写入磁盘,可适用于大规模程序。附图说明图1为本专利技术实施例提供的一种基于单变量访问序模式的中断数据访问冲突检测方法的本文档来自技高网
...

【技术保护点】
1.一种基于单变量访问序模式的中断数据访问冲突检测方法,其特征在于,包括:/n获取多个源文件;/n对每个所述源文件的函数进行可达访问分析,生成每个所述源文件的可达访问图;/n使用所述多个源文件的函数调用关系和各所述源文件的函数摘要,更新各所述可达访问图;/n遍历各更新后的可达访问图,匹配单变量访问序模式,得到中断数据访问冲突检测结果。/n

【技术特征摘要】
1.一种基于单变量访问序模式的中断数据访问冲突检测方法,其特征在于,包括:
获取多个源文件;
对每个所述源文件的函数进行可达访问分析,生成每个所述源文件的可达访问图;
使用所述多个源文件的函数调用关系和各所述源文件的函数摘要,更新各所述可达访问图;
遍历各更新后的可达访问图,匹配单变量访问序模式,得到中断数据访问冲突检测结果。


2.根据权利要求1所述的方法,其特征在于,在所述获取多个源文件之后,还包括:
收集所述多个源文件分别对应的被调用函数的函数摘要;所述函数摘要为可达访问图的出口结点的可达访问集。


3.根据权利要求1所述的方法,其特征在于,所述对每个所述源文件的函数进行可达访问分析,生成每个所述源文件的可达访问图,包括:
配置主程序入口、中断入口和中断优先级;
分别对所述主程序入口的函数和所述中断入口的函数涉及的源文件,以及各所述源文件中的函数进行不考虑函数调用的可达访问分析,生成各所述可达访问图。


4.根据权利要求3所述的方法,其特征在于,在使用所述多个源文件的函数调用关系和各所述源文件的函数摘要,更新各所述可达访问图之后,还包括:
使用所述函数摘要更新调用函数所在的可达访问图;
在对各所述可达访问图进行更新时,记录所有函数被调用前的程序点的可达访问集;
采用所述可达访问集,作为所述被调函数的可达访问图的入口值再更新,使所有可达访问图达到稳定状态。


5.根据权利要求4所述的方法,其特征在于,所述遍历各更新后的可达访问图,匹配单变量访问序模式,得到中断数据访问冲突检测结果,包括:
通过所述中断入口和所述中断优先级,对被打断的主函数和中断函数进行匹配;
遍历主函数的可达访问图,计算出同一变量的连续两次访问,再匹配所述中断函数中的内存访问,生成数据访问冲突序。


6.一种基于单变...

【专利技术属性】
技术研发人员:陈睿余娜江云松王峥李超贾春鹏肖志恒丁戈李杨吴瑾杨帆
申请(专利权)人:北京轩宇信息技术有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1