精确的中断驱动型嵌入式软件数据竞争动态检测方法技术

技术编号:36540154 阅读:17 留言:0更新日期:2023-02-01 16:36
本发明专利技术公开了精确的中断驱动型嵌入式软件数据竞争动态检测方法,包括以下步骤:步骤一,获取候选同步操作集;步骤二,筛选候选同步操作;步骤三,验证同步操作的准确性;步骤四,检测程序中的数据竞争;相较于现有的数据竞争动态检测方法,本发明专利技术通过识别中断程序中的同步操作,以精确检测程序中的数据竞争,解决了现有方法不能识别中断程序中自定义同步操作,导致数据竞争检测存在大量误报的问题,精化数据竞争检测结果,提高了中断驱动型嵌入式软件可信性;本发明专利技术通过采用动静结合的方式进行同步操作识别,有效地提高了中断程序数据竞争缺陷检测的准确率,提高了软件开发和测试效率,提升了软件的安全性。提升了软件的安全性。提升了软件的安全性。

【技术实现步骤摘要】
精确的中断驱动型嵌入式软件数据竞争动态检测方法


[0001]本专利技术涉及软件缺陷检测
,具体为精确的中断驱动型嵌入式软件数据竞争动态检测方法。

技术介绍

[0002]中断驱动型程序广泛应用于航天、航空、汽车电子、医疗设备等安全关键领域。该类软件引入中断机制,以实时控制I/O设备响应外部任务。由于其绝大部分关键计算或功能都是通过中断发起或处理,在软件运行时会产生大量复杂的执行交错序列,极易出现数据竞争。当程序执行包含对同一内存位置的两次访问,其中有一次为写,且两次访问没有按照happens

before关系进行排序时,则会发生数据竞争。数据竞争会导致严重的并发缺陷,引起各类系统故障,甚至导致严重的安全问题。
[0003]目前检测数据竞争最常采用的策略是动态检测方法。动态竞争检测的传统方法一般通过反复执行程序,得到一些特定的执行交错以揭示缺陷。由于其基于真实的程序执行序列,往往具有较高的精确性。
[0004]已经存在很多针对多线程程序的数据竞争动态检测方法,但这些方法在中断驱动型程序中并不适用。由于中断程序中超过90%的同步都是使用标志变量进行自定义同步的,这与多线程程序截然不同。而同步是保证并发程序正确性与性能的基础。它们通常蕴含一种happens

before的关系,识别出同步操作,可以知道操作是否可以并发发生,不正确或者不完整的同步操作识别将严重限制并发程序分析工具的有效性。中断程序中的自定义同步很难识别,使程序中内存访问的happens
‑<br/>before关系更加复杂,导致检测结果存在大量误报。

技术实现思路

[0005]本专利技术的目的在于提供精确的中断驱动型嵌入式软件数据竞争动态检测方法,以解决上述
技术介绍
中提出的现有方法不能识别中断程序中自定义同步操作,导致数据竞争检测存在大量误报的问题。
[0006]为实现上述目的,本专利技术提供如下技术方案:精确的中断驱动型嵌入式软件数据竞争动态检测方法,包括以下步骤:步骤一,获取候选同步操作集;步骤二,筛选候选同步操作;步骤三,验证同步操作的准确性;步骤四,检测程序中的数据竞争;
[0007]其中在上述步骤一中,基于中断驱动型程序中同步操作的特征,对待处理程序进行静态分析,识别候选同步操作,产生候选同步操作集;
[0008]其中在上述步骤二中,对待处理程序进行动态执行并收集执行序列,基于执行序列与候选同步操作集,进行无监督的推理,从而筛选候选同步操作;
[0009]其中在上述步骤三中,在步骤二中筛选后的候选同步操作前/后触发相应中断,并再次执行程序,以识别该候选操作是否为同步操作,从而验证同步操作的准确性,得到精确的同步操作;
[0010]其中在上述步骤四中,根据步骤三中识别出的同步操作,对执行序列中基于标志变量的同步、中断开关、中断出/入口三种同步进行标注;根据标注后的执行序列,对不同过程中的共享变量访问进行happens

before关系分析,并检测出程序中的数据竞争。
[0011]优选的,所述步骤一中,具体包括以下步骤:
[0012]1.1通过对各种粒度的共享数据访问进行内存建模保证了数据区域的精确访问,识别被主程序与中断访问和被两个不同中断访问的共享变量;
[0013]1.2识别嵌入式系统中的显示和隐式中断开关操作,对于显式操作,考虑标准的中断开关api,对于隐式操作,考虑寄存器实现的中断开关;
[0014]1.3基于中断同步特征,对程序进行候选标志变量识别,识别出仅被赋值为常数的共享变量,或仅被此类变量赋值的共享变量,作为候选标志变量;
[0015]1.4构建候选同步操作集合,该集合由中断开关、中断出口/入口与候选标志变量的读写构成。
[0016]优选的,所述步骤1.3中,中断同步特征为:
[0017]1)中断程序中基于标志变量的同步只通过常量读写实现,即中断程序中的标志变量一定为共享变量,其读/写访问一定针对常量进行,即总被赋值为常量,且总针对常量进行读访问;
[0018]2)标志变量的值可能会被传递给其它标志变量,这些变量共同实现在主程序

中断或中断

中断之间的共享资源访问同步。
[0019]优选的,所述步骤二中,具体包括以下步骤:
[0020]2.1对待处理程序进行动态执行,并收集程序执行序列;
[0021]2.2基于执行后产生的执行序列,构建同步窗口,即从执行日志中识别每一对冲突的访问,并为它们构建同步窗口,该同步窗口包含一个释放窗口与一个获取窗口;
[0022]2.3将同步窗口中的每个操作对象编码为一个变量,其概率取值表征其为同步操作的可能性,从而对步骤1.4中产生的候选同步操作集进行精化,筛选出候选满足推理规则的候选同步操作。
[0023]优选的,所述步骤2.1中,动态执行过程中根据测试用例设置如下信息:
[0024]1)设置第一轮程序执行时的中断发生条件;
[0025]2)设置程序断点位置,以实现精确的内存控制与监控;
[0026]3)设置测试输入,以达到覆盖效果,为同步推理与竞争检测提供充分的信息。
[0027]优选的,所述步骤2.1中,执行序列包括以下四类事件:
[0028]1)主程序和ISR的入口/出口;
[0029]2)中断开/关操作;
[0030]3)候选标志变量的读/写;
[0031]4)除候选标志变量外其余共享变量的读/写。
[0032]优选的,所述步骤2.3中,推理规则为:
[0033]1)写

释放/读

获取:对变量的写操作不会是获取,对变量的读操作不会是释放0;
[0034]2)exit

释放/entry

获取:中断的出口不会是获取,中断的入口不会是释放;
[0035]3)enable

释放/disable

获取:对中断的使能不会是获取,对中断的屏蔽不会是释放;
[0036]4)“冲突”访问对通常被同步操作保护:对于一对释放窗口与获取窗口,释放窗口中的操作为r1,r2,

rn,获取窗口中的操作为a1,a2,

am,释放窗口中大概率会存在一个释放操作,获取窗口中大概率会存在一个获取窗口,以保护该访问对不会冲突;
[0037]5)标志变量总是成对出现:基于标志变量的一次同步由同一个标志变量的读写对实现;对于基于标志变量的同步,如果某个标志变量的写用于释放,那么对应的获取也应该来自于该标志变量的读;即如果一个变量的操作只出现在一类窗口中,那么该变量不会是标志变量,其操作也不会是同步操作;
[0038]6)标志变量的取值差异性不会太大;为了实现基于标志变量的同步,其取值个数大概率为2,所以所有的候选标志变量中,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.精确的中断驱动型嵌入式软件数据竞争动态检测方法,包括以下步骤:步骤一,获取候选同步操作集;步骤二,筛选候选同步操作;步骤三,验证同步操作的准确性;步骤四,检测程序中的数据竞争;其特征在于:其中在上述步骤一中,基于中断驱动型程序中同步操作的特征,对待处理程序进行静态分析,识别候选同步操作,产生候选同步操作集;其中在上述步骤二中,对待处理程序进行动态执行并收集执行序列,基于执行序列与候选同步操作集,进行无监督的推理,从而筛选候选同步操作;其中在上述步骤三中,在步骤二中筛选后的候选同步操作前/后触发相应中断,并再次执行程序,以识别该候选操作是否为同步操作,从而验证同步操作的准确性,得到精确的同步操作;其中在上述步骤四中,根据步骤三中识别出的同步操作,对执行序列中基于标志变量的同步、中断开关、中断出/入口三种同步进行标注;根据标注后的执行序列,对不同过程中的共享变量访问进行happens

before关系分析,并检测出程序中的数据竞争。2.根据权利要求1所述的精确的中断驱动型嵌入式软件数据竞争动态检测方法,其特征在于:所述步骤一中,具体包括以下步骤:1.1通过对各种粒度的共享数据访问进行内存建模保证了数据区域的精确访问,识别被主程序与中断访问和被两个不同中断访问的共享变量;1.2识别嵌入式系统中的显示和隐式中断开关操作,对于显式操作,考虑标准的中断开关api,对于隐式操作,考虑寄存器实现的中断开关;1.3基于中断同步特征,对程序进行候选标志变量识别,识别出仅被赋值为常数的共享变量,或仅被此类变量赋值的共享变量,作为候选标志变量;1.4构建候选同步操作集合,该集合由中断开关、中断出口/入口与候选标志变量的读写构成。3.根据权利要求2所述的精确的中断驱动型嵌入式软件数据竞争动态检测方法,其特征在于:所述步骤1.3中,中断同步特征为:1)中断程序中基于标志变量的同步只通过常量读写实现,即中断程序中的标志变量一定为共享变量,其读/写访问一定针对常量进行,即总被赋值为常量,且总针对常量进行读访问;2)标志变量的值可能会被传递给其它标志变量,这些变量共同实现在主程序

中断或中断

中断之间的共享资源访问同步。4.根据权利要求1所述的精确的中断驱动型嵌入式软件数据竞争动态检测方法,其特征在于:所述步骤二中,具体包括以下步骤:2.1对待处理程序进行动态执行,并收集程序执行序列;2.2基于执行后产生的执行序列,构建同步窗口,即从执行日志中识别每一对冲突的访问,并为它们构建同步窗口,该同步窗口包含一个释放窗口与一个获取窗口;2.3将同步窗口中的每个操作对象编码为一个变量,其概率取值表征其为同步操作的可能性,从而对步骤1.4中产生的候选同步操作集进行精化,筛选出候选满足推理规则的候选同步操作。5.根据权利要求4所述的精确的中断驱动型嵌入式软件数据竞争动态检测方法,其特
征在于:所述步骤2...

【专利技术属性】
技术研发人员:于婷婷陈睿贾春鹏高栋栋李超王博祥
申请(专利权)人:北京轩宇信息技术有限公司
类型:发明
国别省市:

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

1