【技术实现步骤摘要】
精确的中断驱动型嵌入式软件数据竞争动态检测方法
[0001]本专利技术涉及软件缺陷检测
,具体为精确的中断驱动型嵌入式软件数据竞争动态检测方法。
技术介绍
[0002]中断驱动型程序广泛应用于航天、航空、汽车电子、医疗设备等安全关键领域。该类软件引入中断机制,以实时控制I/O设备响应外部任务。由于其绝大部分关键计算或功能都是通过中断发起或处理,在软件运行时会产生大量复杂的执行交错序列,极易出现数据竞争。当程序执行包含对同一内存位置的两次访问,其中有一次为写,且两次访问没有按照happens
‑
before关系进行排序时,则会发生数据竞争。数据竞争会导致严重的并发缺陷,引起各类系统故障,甚至导致严重的安全问题。
[0003]目前检测数据竞争最常采用的策略是动态检测方法。动态竞争检测的传统方法一般通过反复执行程序,得到一些特定的执行交错以揭示缺陷。由于其基于真实的程序执行序列,往往具有较高的精确性。
[0004]已经存在很多针对多线程程序的数据竞争动态检测方法,但这些方法在中断驱动型程序中并不适用。由于中断程序中超过90%的同步都是使用标志变量进行自定义同步的,这与多线程程序截然不同。而同步是保证并发程序正确性与性能的基础。它们通常蕴含一种happens
‑
before的关系,识别出同步操作,可以知道操作是否可以并发发生,不正确或者不完整的同步操作识别将严重限制并发程序分析工具的有效性。中断程序中的自定义同步很难识别,使程序中内存访问的happens
‑< ...
【技术保护点】
【技术特征摘要】
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...
【专利技术属性】
技术研发人员:于婷婷,陈睿,贾春鹏,高栋栋,李超,王博祥,
申请(专利权)人:北京轩宇信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。