基于绝对地址汇聚的数据访问冲突检测方法

文档序号:6526598阅读:154来源:国知局
基于绝对地址汇聚的数据访问冲突检测方法
【专利摘要】基于绝对地址汇聚的数据访问冲突检测方法,是一种针对航天嵌入式C程序数据竞争检测的改进方法。本发明以语法分析技术为基础,结合领域知识,更准确地识别的数据竞争,降低数据竞争检测的漏报率。该方法对C源程序进行语法分析,构造源程序中使用的绝对地址集合,利用绝对地址集合,构造间接影响关系。根据C源程序中的中断响应函数,寻找C源程序包括的所有中断上下文。根据绝对地址之间的间接影响关系,判断中断上下文是否会触发数据访问冲突。与现有的数据访问冲突检测方法相比,本发明所提出的方法,能够降低漏报,提高分析准确度。
【专利说明】基于绝对地址汇聚的数据访问冲突检测方法
【技术领域】
[0001]本发明涉及一种针对航天嵌入式C程序中数据竞争检测的方法。
【背景技术】
[0002]航天嵌入式C程序一般采用任务一中断的架构。任务由控制周期定时调用。在任务执行过程中,如果出现中断信号,那么任务被挂起,转入相应的中断服务程序。一般来说,航天嵌入式C程序具有多重中断,这些中断的优先级不同。低优先级的中断对应的中断服务程序执行时,如果出现高优先级的中断信号,那么当前中断服务程序被挂起,转入高优先级的中断对应的中断服务程序。
[0003]任务和中断服务程序之间、不同的中断服务程序之间,都存在共享数据。如果对该共享数据进行写操作,那么就会发生数据竞争。航天嵌入式C程序一般通过绝对地址访问的方式与外部设备进行交互。这种方式的特点之一是对一处绝对地址进行写操作,可能改变从另一处绝对地址读取到的值。以某种串口设备为例,该串口设备提供两个可访问的绝对地址,分别表示数据缓冲区和缓冲区空余字节数。对前者的写操作,将影响对后者的读操作的结果。如图1所示,任务通过循环语句向串口发送数据,直至串口的缓冲区填满。中断服务程序则在串口的缓冲区有4个字节或4个字节以上的空余时,向串口发送4个字节的数据。如果中断信号发生在判断循环条件和执行循环体之间,且此时*P0RT_SIZE的值为4,那么中断服务程序将向串口写入4个字节的数据。中断服务程序结束后,任务恢复,继续执行循环体。此时,串口的缓冲区已满,循环体中向串口写入I个字节的语句将导致串口的缓冲区溢出。由于中断服务程序和任务对*P0RT_SIZE均为读操作,因此会无法判断,从而导致数据竞争。
[0004]现有的数据访问冲突检测方法主要是针对发生在共享变量之间的数据访问冲突,仅有少数方法能检测发生在绝对地址上的数据访问冲突。这些方法往往简单地将绝对地址视为共享变量的特殊形式,而没有考虑绝对地址之间的关联性。

【发明内容】

[0005]本发明的技术解决问题是:克服现有技术的不足,提供了一种基于绝对地址汇聚的数据访问冲突检测方法,可以降低C程序中数据竞争检测的漏报率。
[0006]本发明的技术解决方案是:基于绝对地址汇聚的数据访问冲突检测方法,步骤如下:
[0007](I)对C源程序进行语法分析,构造源程序中使用的绝对地址集合;利用绝对地址集合,构造间接影响关系;所述的间接影响关系是一组绝对地址上的一一映射关系,具有一一映射关系的两个绝对地址中,对其中一个绝对地址的写操作会导致另一个绝对地址的读操作的结果发生变化;
[0008](2)根据C源程序中的中断响应函数,寻找C源程序包括的所有中断上下文;
[0009](3)对于步骤(2)中确定的每个中断上下文,进行下列检查:[0010](31)将C源程序的主程序中进行读操作的绝对地址构成的集合记作R1,写操作构成的集合记作W1,将C源程序的中断中进行读操作的绝对地址构成的集合记作R2,写操作构成的集合记作W2 ;
[0011](32)令 W1=Closure (E, W1),w2=closure (E, W2),其中 E 为步骤(1)中的间接影响关系!Wi=Closure (E, Wi), i=l、2的计算步骤如下:
[0012](321)令 Wi=Wi;
[0013](322)对任意的d e Wi,令Wi’=WiU{E(d)};其中E(d)为绝对地址d所处的间接影响关系对应的绝对地址;
[0014](323)如果Wi=Wi'那么Wi=Closure (E, Wi)计算完毕,否则令Wi=Wi',并回到步骤(322);
[0015](33)令A=(Wl H w2)U(W1 H R2)U(R1 H w2);如果A= 0,那么没有数据访问冲突;否则判定在集合A中的绝对地址处发生数据访问冲突。
[0016]本发明与现有技术相比的优点在于:(1)从绝对地址的角度考虑数据访问冲突,并引入了绝对地址之间的影响关系,使得检测结果更加全面,减少了漏报;(2)判断数据访问冲突时,利用了闭包运算,考虑了所有可能的间接影响,进一步降低了漏报;(3)本文所述的方法不仅能够检测数据访问冲突,还能定位发生数据访问冲突的绝对地址和中断上下文,为解决数据访问冲突提供了依据。
【专利附图】

【附图说明】
[0017]图1为绝对地址的数据竞争示例图;
[0018]图2为本发明方法的流程图。
【具体实施方式】
[0019]航天嵌入式C程序的特点之一是通过绝对地址访问的方式与外部设备进行交互。对一处绝对地址的写操作,可能导致其他外部地址的读操作的结果发生变化。因此,对这样的绝对地址的写操作,可以视为同时对多个绝对地址的写操作。
[0020]为了识别这种特殊的写操作,应当列出这类绝对地址,以及受到该类绝对地址写操作影响的其余绝对地址。
[0021]设C程序可访问的绝对地址的集合为A,那么这种影响可以用映射R表示:R:A K2A,映射R的定义域属于C程序可访问的绝对地址的集合,值域属于绝对地址集合构成的幂集。通过映射R,定义了每个绝对地址执行写操作时,受到影响的其他绝对地址集合。
[0022]以图1所示的C源程序为例,地址0x1004000是串口数据缓冲区写操作的绝对地址,地址0x1004020是读取串口数据缓冲区空余字节数的绝对地址。对数据缓冲区执行写操作时,将改变缓冲区空余字节数,即影响对绝对地址0x1004020的读操作的结果。因此,该段C源程序对应的映射R是:
[0023]{0x1004000 ^ {0x1004020}}
[0024]进行数据竞争分析时,不仅需要考虑绝对地址访问本身,对于绝对地址的写操作,还应当根据映射R,将受到该写操作影响的其余绝对地址也列为进行写操作的绝对地址。
[0025]如图2所示,本发明方法的主要步骤如下:[0026]1、对C源程序进行语法分析,构造源程序中使用的绝对地址集合;利用绝对地址集合,构造间接影响关系;所述的间接影响关系是一组绝对地址上的一一映射关系,具有一一映射关系的两个绝对地址中,对其中一个绝对地址的写操作会导致另一个绝对地址的读操作的结果发生变化;
[0027]2、根据C源程序中的中断响应函数,寻找C源程序包括的所有中断上下文;
[0028]3、对于步骤(2)中确定的每个中断上下文,进行下列检查:
[0029]3.1将C源程序的主程序中进行读操作的绝对地址构成的集合记作R1,写操作构成的集合记作W1,将C源程序的中断中进行读操作的绝对地址构成的集合记作R2,写操作构成的集合记作W2 ;
[0030]3.2 令 W1=Closure (E, W1), w2=closure (E, W2),其中 E 为步骤(I)中的间接影响关系!Wi=Closure (E, Wi), i=l、2的计算步骤如下:
[0031]3.2.1 令 Wi=Wi;
[0032]3.2.2对任意的d e Wi,令Wi’ =WiU {E (d)};其中E (d)为绝对地址d所处的间接影响关系对应的绝对地址;
[0033]3.2.3如果Wi=Wi'那么Wi=Closure (E, Wi)计算完毕,否则令Wi=Wi',并回到步骤(322);
[0034]3.3令A= (W1 H w2) U (W1 H R2) U (R1 H w2);如果A= 0,那么没有数据访问冲突;否
则判定在集合A中的绝对地址处发生数据访问冲突。
[0035]4、结束。
[0036]本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。
【权利要求】
1.基于绝对地址汇聚的数据访问冲突检测方法,其特征在于步骤如下: (1)对C源程序进行语法分析,构造源程序中使用的绝对地址集合;利用绝对地址集合,构造间接影响关系;所述的间接影响关系是一组绝对地址上的一一映射关系,具有一一映射关系的两个绝对地址中,对其中一个绝对地址的写操作会导致另一个绝对地址的读操作的结果发生变化; (2)根据C源程序中的中断响应函数,寻找C源程序包括的所有中断上下文; (3)对于步骤(2)中确定的每个中断上下文,进行下列检查: (31)将C源程序的主程序中进行读操作的绝对地址构成的集合记作R1,写操作构成的集合记作W1,将C源程序的中断中进行读操作的绝对地址构成的集合记作R2,写操作构成的集合记作W2 ; (32)令W1=Closure (E, W1), w2=closure (E, W2),其中 E 为步骤(1)中的间接影响关系;Wi=Closure (E, Wi), i=l、2 的计算步骤如下:
(321)令Wi=Wi ; (322)对任意的de Wi,令Wi’=WiU{E(d)};其中E(d)为绝对地址d所处的间接影响关系对应的绝对地址; (323)如果Wi=Wi'那么Wi=Closure(E, Wi)计算完毕,否则令Wi=Wi',并回到步骤(322); (33)令A=(Wln W2)U(W1 n R2)U(R1 n W2);如果A= 0,那么没有数据访问冲突;否则判定在集合A中的绝对地址处发生数据访问冲突。
【文档编号】G06F9/44GK103699388SQ201310744736
【公开日】2014年4月2日 申请日期:2013年12月30日 优先权日:2013年12月30日
【发明者】王政, 綦艳霞, 顾斌, 董晓刚, 陈睿, 陈尧, 赵雷, 郭向英 申请人:北京控制工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1