[发明专利]一种基于控制流的数据竞争误报降低方法有效

专利信息
申请号: 201310744664.4 申请日: 2013-12-30
公开(公告)号: CN103678136A 公开(公告)日: 2014-03-26
发明(设计)人: 顾斌;王政;董晓刚;綦艳霞;陈尧;赵雷;陈睿 申请(专利权)人: 北京控制工程研究所
主分类号: G06F11/36 分类号: G06F11/36;G06F9/46
代理公司: 中国航天科技专利中心 11009 代理人: 陈鹏
地址: 100080 *** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 控制 数据 竞争 降低 方法
【说明书】:

技术领域

发明涉及一种针对航天嵌入式C程序数据竞争检测的方法,用于识别程序运行过程中无害的数据竞争,降低数据竞争检测的误报率。

背景技术

航天嵌入式C程序一般采用主程序—中断的架构。主程序由控制周期定时调用。在主程序执行过程中,如果出现中断信号,那么主程序被挂起,转入相应的中断服务程序。一般来说,航天嵌入式C程序具有多重中断,这些中断的优先级不同。低优先级的中断对应的中断服务程序执行时,如果出现高优先级的中断信号,那么当前中断服务程序被挂起,转入高优先级的中断对应的中断服务程序。

主程序和中断服务程序之间、不同的中断服务程序之间,均存在共享变量。如果对该共享变量进行写操作,那么就会发生数据竞争。如图1所示,Time.second和Time.Millisecond是主程序和中断服务程序的共享变量。主程序读这两个变量,并使用它们的值,计算变量StarTime。中断服务程序写这两个变量。如果在主程序读取Time.second和Time.Millisecond之间,发生中断,那么主程序将被挂起,转入中断服务程序。Time.second和Time.Millisecond的值在中断服务程序中被修改。中断服务程序结束后,继续执行主程序。主程序读取到的Time.Millisecond的值是刚才在中断服务程序中被修改的值。这样,主程序读取到的Time.second和Time.Millisecond的值不是同一次中断服务程序修改的值,可能导致StarTime计算错误。当共享变量较多,使用次数频繁时,数据竞争的场景会非常多,给用户带来判读困难。

航天嵌入式C程序的特点之一是主程序按照系统的周期反复执行。大部分中断发生的频率要低于主程序按周期执行的频率,即每次主程序执行过程中,大部分中断最多发生一次。作为一种实时软件,航天嵌入式C程序要求中断服务程序执行时间短。因此,中断服务程序往往不实现具体的计算过程,仅负责必要的数据读取,并修改相应的标志变量。待中断服务程序结束,主程序恢复之后,根据标志变量的取值,由主程序完成相应的计算。计算完成后,主程序修改标志变量的取值,避免下个周期重复计算。

这类标志变量是主程序和中断服务程序之间的共享变量,且主程序和中断服务程序均对这类变量进行了写操作,符合数据竞争的定义。因此,标准的数据竞争分析方法将报告大量的此类数据竞争。然而,这些数据竞争都是无害的。图2展示了此类无害数据竞争的一个例子。如果中断发生在图2中的if语句之前,那么共享变量flg被中断服务程序置为TRUE,中断服务程序结束后,主程序将进入if的真分支,flg被重新置为FALSE。如果中断发生在图中的if语句之后,那么共享变量flg被中断服务程序置为TRUE,中断服务程序结束后,主程序继续执行。下一个周期,主程序将进入if的真分支,flg被重新置为FALSE。如果中断发生在if语句的真分支之内,flg=FALSE之前,那么中断服务程序中对flg的修改将被主程序中的flg=FALSE覆盖。但是,这个场景实际上不可能发生。因为中断发生的频率低于主程序执行的频率。如果主程序能够进入if的真分支,那么说明在最近一个周期内,发生过该中断。因此,在if的真分支之内,不会再次发生该中断。

因此,大量的报告此类无害的数据竞争会大大增加分析C源程序正确性的代价,甚至掩盖了有害的数据竞争。

发明内容

本发明的技术解决问题是:克服现有技术的不足,提供了一种基于控制流的数据竞争误报降低方法,可以有效识别程序运行过程中无害的数据竞争,降低数据竞争检测的误报率。

本发明的技术解决方案是:一种基于控制流的数据竞争误报降低方法,步骤如下:

(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的写操作位于循环体中;

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京控制工程研究所,未经北京控制工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201310744664.4/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top