发明名称 一种基于控制流的数据竞争误报降低方法
摘要 一种基于控制流的数据竞争误报降低方法,是一种针对航天嵌入式C程序数据竞争检测的改进方法,目的在于降低误报、提高分析准确度。一般认为,主程序和中断服务程序具有共享变量时,如果二者中至少一个对该共享变量进行了写操作,那么该变量可能会发生数据竞争。本发明以语法分析技术为基础,结合领域特征,识别无害的数据竞争,降低数据竞争检测的误报率。本发明提出的检查方法降低了数据竞争检测的误报率,有利于发现真正有害的数据竞争。
申请公布号 CN103678136B 申请公布日期 2015.07.08
申请号 CN201310744664.4 申请日期 2013.12.30
申请人 北京控制工程研究所 发明人 顾斌;王政;董晓刚;綦艳霞;陈尧;赵雷;陈睿
分类号 G06F11/36(2006.01)I;G06F9/46(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 中国航天科技专利中心 11009 代理人 陈鹏
主权项 一种基于控制流的数据竞争误报降低方法,其特征在于步骤如下:(1)对C源程序中的共享变量进行搜索,获得所有共享变量的集合S;(2)对于S中的每个元素v,查找同时满足以下四个条件的元素v,构成检测共享变量集合S1;所述的四个条件为:(A)C源程序的主程序和中断服务程序中对v的写操作均有且只有一处;(B)主程序和中断服务程序分别对v赋值为取值是两态的常量;(C)中断服务程序中对v没有读操作;(D)主程序中对v有且只有一处读操作;(3)针对检测共享变量集合S1中的每个元素v1,查找满足以下三个条件中的任何一个条件的元素v1,构成无害共享变量集合S2;所述的三个条件为:(E)主程序中将v1用于if条件并且主程序中对v1的写操作位于if的分支中;(F)主程序中将v1用于循环条件并且主程序中对v1的写操作位于循环体中;(G)主程序中将v1用于循环条件并且主程序中对v1的写操作是循环语句之后的第一个语句;(4)将无害共享变量集合S2中的每个元素作为无害共享变量,并解除对无害共享变量的数据竞争报警。
地址 100080 北京市海淀区北京2729信箱