CN103699388B - 基于绝对地址汇聚的数据访问冲突检测方法 - Google Patents
基于绝对地址汇聚的数据访问冲突检测方法 Download PDFInfo
- Publication number
- CN103699388B CN103699388B CN201310744736.5A CN201310744736A CN103699388B CN 103699388 B CN103699388 B CN 103699388B CN 201310744736 A CN201310744736 A CN 201310744736A CN 103699388 B CN103699388 B CN 103699388B
- Authority
- CN
- China
- Prior art keywords
- specific address
- source program
- data access
- access conflict
- closure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
基于绝对地址汇聚的数据访问冲突检测方法,是一种针对航天嵌入式C程序数据竞争检测的改进方法。本发明以语法分析技术为基础,结合领域知识,更准确地识别的数据竞争,降低数据竞争检测的漏报率。该方法对C源程序进行语法分析,构造源程序中使用的绝对地址集合,利用绝对地址集合,构造间接影响关系。根据C源程序中的中断响应函数,寻找C源程序包括的所有中断上下文。根据绝对地址之间的间接影响关系,判断中断上下文是否会触发数据访问冲突。与现有的数据访问冲突检测方法相比,本发明所提出的方法,能够降低漏报,提高分析准确度。
Description
技术领域
本发明涉及一种针对航天嵌入式C程序中数据竞争检测的方法。
背景技术
航天嵌入式C程序一般采用任务—中断的架构。任务由控制周期定时调用。在任务执行过程中,如果出现中断信号,那么任务被挂起,转入相应的中断服务程序。一般来说,航天嵌入式C程序具有多重中断,这些中断的优先级不同。低优先级的中断对应的中断服务程序执行时,如果出现高优先级的中断信号,那么当前中断服务程序被挂起,转入高优先级的中断对应的中断服务程序。
任务和中断服务程序之间、不同的中断服务程序之间,都存在共享数据。如果对该共享数据进行写操作,那么就会发生数据竞争。航天嵌入式C程序一般通过绝对地址访问的方式与外部设备进行交互。这种方式的特点之一是对一处绝对地址进行写操作,可能改变从另一处绝对地址读取到的值。以某种串口设备为例,该串口设备提供两个可访问的绝对地址,分别表示数据缓冲区和缓冲区空余字节数。对前者的写操作,将影响对后者的读操作的结果。如图1所示,任务通过循环语句向串口发送数据,直至串口的缓冲区填满。中断服务程序则在串口的缓冲区有4个字节或4个字节以上的空余时,向串口发送4个字节的数据。如果中断信号发生在判断循环条件和执行循环体之间,且此时*PORT_SIZE的值为4,那么中断服务程序将向串口写入4个字节的数据。中断服务程序结束后,任务恢复,继续执行循环体。此时,串口的缓冲区已满,循环体中向串口写入1个字节的语句将导致串口的缓冲区溢出。由于中断服务程序和任务对*PORT_SIZE均为读操作,因此会无法判断,从而导致数据竞争。
现有的数据访问冲突检测方法主要是针对发生在共享变量之间的数据访问冲突,仅有少数方法能检测发生在绝对地址上的数据访问冲突。这些方法往往简单地将绝对地址视为共享变量的特殊形式,而没有考虑绝对地址之间的关联性。
发明内容
本发明的技术解决问题是:克服现有技术的不足,提供了一种基于绝对地址汇聚的数据访问冲突检测方法,可以降低C程序中数据竞争检测的漏报率。
本发明的技术解决方案是:基于绝对地址汇聚的数据访问冲突检测方法,步骤如下:
(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=1、2的计算步骤如下:
(321)令wi=Wi;
(322)对任意的d∈wi,令wi'=wiU{E(d)};其中E(d)为绝对地址d所处的间接影响关系对应的绝对地址;
(323)如果wi=wi'那么wi=closure(E,Wi)计算完毕,否则令wi=wi',并回到步骤(322);
(33)令A=(w1∩w2)U(w1∩R2)U(R1∩w2);如果A=,那么没有数据访问冲突;否则判定在集合A中的绝对地址处发生数据访问冲突。
本发明与现有技术相比的优点在于:(1)从绝对地址的角度考虑数据访问冲突,并引入了绝对地址之间的影响关系,使得检测结果更加全面,减少了漏报;(2)判断数据访问冲突时,利用了闭包运算,考虑了所有可能的间接影响,进一步降低了漏报;(3)本文所述的方法不仅能够检测数据访问冲突,还能定位发生数据访问冲突的绝对地址和中断上下文,为解决数据访问冲突提供了依据。
附图说明
图1为绝对地址的数据竞争示例图;
图2为本发明方法的流程图。
具体实施方式
航天嵌入式C程序的特点之一是通过绝对地址访问的方式与外部设备进行交互。对一处绝对地址的写操作,可能导致其他外部地址的读操作的结果发生变化。因此,对这样的绝对地址的写操作,可以视为同时对多个绝对地址的写操作。
为了识别这种特殊的写操作,应当列出这类绝对地址,以及受到该类绝对地址写操作影响的其余绝对地址。
设C程序可访问的绝对地址的集合为A,那么这种影响可以用映射R表示:R:A2A,映射R的定义域属于C程序可访问的绝对地址的集合,值域属于绝对地址集合构成的幂集。通过映射R,定义了每个绝对地址执行写操作时,受到影响的其他绝对地址集合。
以图1所示的C源程序为例,地址0x1004000是串口数据缓冲区写操作的绝对地址,地址0x1004020是读取串口数据缓冲区空余字节数的绝对地址。对数据缓冲区执行写操作时,将改变缓冲区空余字节数,即影响对绝对地址0x1004020的读操作的结果。因此,该段C源程序对应的映射R是:
{0x1004000{0x1004020}}
进行数据竞争分析时,不仅需要考虑绝对地址访问本身,对于绝对地址的写操作,还应当根据映射R,将受到该写操作影响的其余绝对地址也列为进行写操作的绝对地址。
如图2所示,本发明方法的主要步骤如下:
1、对C源程序进行语法分析,构造源程序中使用的绝对地址集合;利用绝对地址集合,构造间接影响关系;所述的间接影响关系是一组绝对地址上的一一映射关系,具有一一映射关系的两个绝对地址中,对其中一个绝对地址的写操作会导致另一个绝对地址的读操作的结果发生变化;
2、根据C源程序中的中断响应函数,寻找C源程序包括的所有中断上下文;
3、对于步骤(2)中确定的每个中断上下文,进行下列检查:
3.1将C源程序的主程序中进行读操作的绝对地址构成的集合记作R1,写操作构成的集合记作W1,将C源程序的中断中进行读操作的绝对地址构成的集合记作R2,写操作构成的集合记作W2;
3.2令w1=closure(E,W1),w2=closure(E,W2),其中E为步骤(1)中的间接影响关系;wi=closure(E,Wi),i=1、2的计算步骤如下:
3.2.1令wi=Wi;
3.2.2对任意的d∈wi,令wi'=wiU{E(d)};其中E(d)为绝对地址d所处的间接影响关系对应的绝对地址;
3.2.3如果wi=wi'那么wi=closure(E,Wi)计算完毕,否则令wi=wi',并回到步骤(322);
3.3令A=(w1∩w2)U(w1∩R2)U(R1∩w2);如果A=,那么没有数据访问冲突;否则判定在集合A中的绝对地址处发生数据访问冲突。
4、结束。
本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。
Claims (1)
1.基于绝对地址汇聚的数据访问冲突检测方法,其特征在于步骤如下:
(1)对C源程序进行语法分析,构造源程序中使用的绝对地址集合;利用绝对地址集合,构造间接影响关系;所述的间接影响关系是一组绝对地址上的一一映射关系,具有一一映射关系的两个绝对地址中,对其中一个绝对地址的写操作会导致另一个绝对地址的读操作的结果发生变化;
(2)根据C源程序中的中断响应函数,寻找C源程序包括的所有中断上下文;
(3)对于步骤(2)中确定的每个中断上下文,进行下列检查:
(3.1)将C源程序的主程序中进行读操作的绝对地址构成的集合记作R1,写操作构成的集合记作W1,将C源程序的中断中进行读操作的绝对地址构成的集合记作R2,写操作构成的集合记作W2;
(3.2)令w1=closure(E,W1),w2=closure(E,W2),其中E为步骤(1)中的间接影响关系;wi=closure(E,Wi),i=1、2的计算步骤如下:
(3.2.1)令wi=Wi;
(3.2.2)对任意的d∈wi,令wi'=wi∪{E(d)};其中E(d)为绝对地址d所处的间接影响关系对应的绝对地址;
(3.2.3)如果wi=wi'那么wi=closure(E,Wi)计算完毕,否则令wi=wi',并回到步骤(3.2.2);
(3.3)令A=(w1∩w2)∪(w1∩R2)∪(R1∩w2);如果那么没有数据访问冲突;否则判定在集合A中的绝对地址处发生数据访问冲突。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310744736.5A CN103699388B (zh) | 2013-12-30 | 2013-12-30 | 基于绝对地址汇聚的数据访问冲突检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310744736.5A CN103699388B (zh) | 2013-12-30 | 2013-12-30 | 基于绝对地址汇聚的数据访问冲突检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103699388A CN103699388A (zh) | 2014-04-02 |
CN103699388B true CN103699388B (zh) | 2015-07-08 |
Family
ID=50360927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310744736.5A Active CN103699388B (zh) | 2013-12-30 | 2013-12-30 | 基于绝对地址汇聚的数据访问冲突检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103699388B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104090798B (zh) * | 2014-07-08 | 2017-02-15 | 南京大学 | 动静态结合的中断驱动程序数据竞争检测方法 |
CN111159022B (zh) * | 2019-12-20 | 2023-05-02 | 北京轩宇信息技术有限公司 | 基于单变量访问序模式的中断数据访问冲突检测方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1319806A (zh) * | 2000-02-04 | 2001-10-31 | 密克罗奇普技术公司 | 微控制器双端口ram操作中冲突检测的装置和方法 |
CN1575453A (zh) * | 2000-12-27 | 2005-02-02 | 英特尔公司 | 用于解决在一个虚拟机监控器和一个客户操作系统之间的地址空间冲突的方法 |
CN101038571A (zh) * | 2007-04-19 | 2007-09-19 | 北京理工大学 | 一种块传输的多端口存储控制器 |
-
2013
- 2013-12-30 CN CN201310744736.5A patent/CN103699388B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1319806A (zh) * | 2000-02-04 | 2001-10-31 | 密克罗奇普技术公司 | 微控制器双端口ram操作中冲突检测的装置和方法 |
CN1575453A (zh) * | 2000-12-27 | 2005-02-02 | 英特尔公司 | 用于解决在一个虚拟机监控器和一个客户操作系统之间的地址空间冲突的方法 |
CN101038571A (zh) * | 2007-04-19 | 2007-09-19 | 北京理工大学 | 一种块传输的多端口存储控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN103699388A (zh) | 2014-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2743834B1 (en) | Dynamic set-associative cache apparatus for processor and visiting method thereof | |
US9411745B2 (en) | Multi-core heterogeneous system translation lookaside buffer coherency | |
CN106201892B (zh) | 用于嵌入式软件的异常中断源定位检测方法 | |
US9086987B2 (en) | Detection of conflicts between transactions and page shootdowns | |
US10152420B2 (en) | Multi-way set associative cache and processing method thereof | |
WO2018027839A1 (zh) | 一种页表缓存tlb中表项的访问方法,及处理芯片 | |
WO2015088534A1 (en) | Techniques for detecting race conditions | |
TW201706853A (zh) | 用於快取標籤壓縮之方法及裝置 | |
US9804896B2 (en) | Thread migration across cores of a multi-core processor | |
CN104679645A (zh) | 一种栈空间余量实时检测方法 | |
CN107659465A (zh) | 一种整车can总线错误帧的排查装置及排查方法 | |
CN103699388B (zh) | 基于绝对地址汇聚的数据访问冲突检测方法 | |
US20140075151A1 (en) | Detection of conflicts between transactions and page shootdowns | |
US9454201B2 (en) | Detecting access to powered down device | |
CN104182334A (zh) | Numa系统的内存测试方法及系统 | |
EP3132354A1 (en) | Method and apparatus for lowering bandwidth and power in a cache using read with invalidate | |
US10846211B2 (en) | Testing kernel mode computer code by executing the computer code in user mode | |
CN111857591A (zh) | 用于执行指令的方法、装置、设备和计算机可读存储介质 | |
WO2015085891A1 (zh) | 一种建立处理器Cache检查点的方法、装置及系统 | |
US20190095442A1 (en) | Techniques to enable early detection of search misses to accelerate hash look-ups | |
CN104966019A (zh) | 一种启发式文档威胁检测方法及系统 | |
US9678852B2 (en) | Tracing the operations of a data processing apparatus using trace data source identifiers to respond to flush requests | |
US10579470B1 (en) | Address failure detection for memory devices having inline storage configurations | |
CN105183668A (zh) | 缓存刷新方法及装置 | |
EP3153971B1 (en) | A data processing apparatus and a method of operating a data processing apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |