发明名称 |
一种基于控制流的数据竞争误报降低方法 |
摘要 |
一种基于控制流的数据竞争误报降低方法,是一种针对航天嵌入式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信箱 |