两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

基于絕對地址匯聚的數(shù)據(jù)訪問沖突檢測方法

文檔序號:6526598閱讀:180來源:國知局
基于絕對地址匯聚的數(shù)據(jù)訪問沖突檢測方法
【專利摘要】基于絕對地址匯聚的數(shù)據(jù)訪問沖突檢測方法,是一種針對航天嵌入式C程序數(shù)據(jù)競爭檢測的改進方法。本發(fā)明以語法分析技術(shù)為基礎(chǔ),結(jié)合領(lǐng)域知識,更準確地識別的數(shù)據(jù)競爭,降低數(shù)據(jù)競爭檢測的漏報率。該方法對C源程序進行語法分析,構(gòu)造源程序中使用的絕對地址集合,利用絕對地址集合,構(gòu)造間接影響關(guān)系。根據(jù)C源程序中的中斷響應函數(shù),尋找C源程序包括的所有中斷上下文。根據(jù)絕對地址之間的間接影響關(guān)系,判斷中斷上下文是否會觸發(fā)數(shù)據(jù)訪問沖突。與現(xiàn)有的數(shù)據(jù)訪問沖突檢測方法相比,本發(fā)明所提出的方法,能夠降低漏報,提高分析準確度。
【專利說明】基于絕對地址匯聚的數(shù)據(jù)訪問沖突檢測方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種針對航天嵌入式C程序中數(shù)據(jù)競爭檢測的方法。
【背景技術(shù)】
[0002]航天嵌入式C程序一般采用任務一中斷的架構(gòu)。任務由控制周期定時調(diào)用。在任務執(zhí)行過程中,如果出現(xiàn)中斷信號,那么任務被掛起,轉(zhuǎn)入相應的中斷服務程序。一般來說,航天嵌入式C程序具有多重中斷,這些中斷的優(yōu)先級不同。低優(yōu)先級的中斷對應的中斷服務程序執(zhí)行時,如果出現(xiàn)高優(yōu)先級的中斷信號,那么當前中斷服務程序被掛起,轉(zhuǎn)入高優(yōu)先級的中斷對應的中斷服務程序。
[0003]任務和中斷服務程序之間、不同的中斷服務程序之間,都存在共享數(shù)據(jù)。如果對該共享數(shù)據(jù)進行寫操作,那么就會發(fā)生數(shù)據(jù)競爭。航天嵌入式C程序一般通過絕對地址訪問的方式與外部設備進行交互。這種方式的特點之一是對一處絕對地址進行寫操作,可能改變從另一處絕對地址讀取到的值。以某種串口設備為例,該串口設備提供兩個可訪問的絕對地址,分別表示數(shù)據(jù)緩沖區(qū)和緩沖區(qū)空余字節(jié)數(shù)。對前者的寫操作,將影響對后者的讀操作的結(jié)果。如圖1所示,任務通過循環(huán)語句向串口發(fā)送數(shù)據(jù),直至串口的緩沖區(qū)填滿。中斷服務程序則在串口的緩沖區(qū)有4個字節(jié)或4個字節(jié)以上的空余時,向串口發(fā)送4個字節(jié)的數(shù)據(jù)。如果中斷信號發(fā)生在判斷循環(huán)條件和執(zhí)行循環(huán)體之間,且此時*P0RT_SIZE的值為4,那么中斷服務程序?qū)⑾虼趯懭?個字節(jié)的數(shù)據(jù)。中斷服務程序結(jié)束后,任務恢復,繼續(xù)執(zhí)行循環(huán)體。此時,串口的緩沖區(qū)已滿,循環(huán)體中向串口寫入I個字節(jié)的語句將導致串口的緩沖區(qū)溢出。由于中斷服務程序和任務對*P0RT_SIZE均為讀操作,因此會無法判斷,從而導致數(shù)據(jù)競爭。
[0004]現(xiàn)有的數(shù)據(jù)訪問沖突檢測方法主要是針對發(fā)生在共享變量之間的數(shù)據(jù)訪問沖突,僅有少數(shù)方法能檢測發(fā)生在絕對地址上的數(shù)據(jù)訪問沖突。這些方法往往簡單地將絕對地址視為共享變量的特殊形式,而沒有考慮絕對地址之間的關(guān)聯(lián)性。

【發(fā)明內(nèi)容】

[0005]本發(fā)明的技術(shù)解決問題是:克服現(xiàn)有技術(shù)的不足,提供了一種基于絕對地址匯聚的數(shù)據(jù)訪問沖突檢測方法,可以降低C程序中數(shù)據(jù)競爭檢測的漏報率。
[0006]本發(fā)明的技術(shù)解決方案是:基于絕對地址匯聚的數(shù)據(jù)訪問沖突檢測方法,步驟如下:
[0007](I)對C源程序進行語法分析,構(gòu)造源程序中使用的絕對地址集合;利用絕對地址集合,構(gòu)造間接影響關(guān)系;所述的間接影響關(guān)系是一組絕對地址上的一一映射關(guān)系,具有一一映射關(guān)系的兩個絕對地址中,對其中一個絕對地址的寫操作會導致另一個絕對地址的讀操作的結(jié)果發(fā)生變化;
[0008](2)根據(jù)C源程序中的中斷響應函數(shù),尋找C源程序包括的所有中斷上下文;
[0009](3)對于步驟(2)中確定的每個中斷上下文,進行下列檢查:[0010](31)將C源程序的主程序中進行讀操作的絕對地址構(gòu)成的集合記作R1,寫操作構(gòu)成的集合記作W1,將C源程序的中斷中進行讀操作的絕對地址構(gòu)成的集合記作R2,寫操作構(gòu)成的集合記作W2 ;
[0011](32)令 W1=Closure (E, W1),w2=closure (E, W2),其中 E 為步驟(1)中的間接影響關(guān)系!Wi=Closure (E, Wi), i=l、2的計算步驟如下:
[0012](321)令 Wi=Wi;
[0013](322)對任意的d e Wi,令Wi’=WiU{E(d)};其中E(d)為絕對地址d所處的間接影響關(guān)系對應的絕對地址;
[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,那么沒有數(shù)據(jù)訪問沖突;否則判定在集合A中的絕對地址處發(fā)生數(shù)據(jù)訪問沖突。
[0016]本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點在于:(1)從絕對地址的角度考慮數(shù)據(jù)訪問沖突,并引入了絕對地址之間的影響關(guān)系,使得檢測結(jié)果更加全面,減少了漏報;(2)判斷數(shù)據(jù)訪問沖突時,利用了閉包運算,考慮了所有可能的間接影響,進一步降低了漏報;(3)本文所述的方法不僅能夠檢測數(shù)據(jù)訪問沖突,還能定位發(fā)生數(shù)據(jù)訪問沖突的絕對地址和中斷上下文,為解決數(shù)據(jù)訪問沖突提供了依據(jù)。
【專利附圖】

【附圖說明】
[0017]圖1為絕對地址的數(shù)據(jù)競爭示例圖;
[0018]圖2為本發(fā)明方法的流程圖。
【具體實施方式】
[0019]航天嵌入式C程序的特點之一是通過絕對地址訪問的方式與外部設備進行交互。對一處絕對地址的寫操作,可能導致其他外部地址的讀操作的結(jié)果發(fā)生變化。因此,對這樣的絕對地址的寫操作,可以視為同時對多個絕對地址的寫操作。
[0020]為了識別這種特殊的寫操作,應當列出這類絕對地址,以及受到該類絕對地址寫操作影響的其余絕對地址。
[0021]設C程序可訪問的絕對地址的集合為A,那么這種影響可以用映射R表示:R:A K2A,映射R的定義域?qū)儆贑程序可訪問的絕對地址的集合,值域?qū)儆诮^對地址集合構(gòu)成的冪集。通過映射R,定義了每個絕對地址執(zhí)行寫操作時,受到影響的其他絕對地址集合。
[0022]以圖1所示的C源程序為例,地址0x1004000是串口數(shù)據(jù)緩沖區(qū)寫操作的絕對地址,地址0x1004020是讀取串口數(shù)據(jù)緩沖區(qū)空余字節(jié)數(shù)的絕對地址。對數(shù)據(jù)緩沖區(qū)執(zhí)行寫操作時,將改變緩沖區(qū)空余字節(jié)數(shù),即影響對絕對地址0x1004020的讀操作的結(jié)果。因此,該段C源程序?qū)挠成銻是:
[0023]{0x1004000 ^ {0x1004020}}
[0024]進行數(shù)據(jù)競爭分析時,不僅需要考慮絕對地址訪問本身,對于絕對地址的寫操作,還應當根據(jù)映射R,將受到該寫操作影響的其余絕對地址也列為進行寫操作的絕對地址。
[0025]如圖2所示,本發(fā)明方法的主要步驟如下:[0026]1、對C源程序進行語法分析,構(gòu)造源程序中使用的絕對地址集合;利用絕對地址集合,構(gòu)造間接影響關(guān)系;所述的間接影響關(guān)系是一組絕對地址上的一一映射關(guān)系,具有一一映射關(guān)系的兩個絕對地址中,對其中一個絕對地址的寫操作會導致另一個絕對地址的讀操作的結(jié)果發(fā)生變化;
[0027]2、根據(jù)C源程序中的中斷響應函數(shù),尋找C源程序包括的所有中斷上下文;
[0028]3、對于步驟(2)中確定的每個中斷上下文,進行下列檢查:
[0029]3.1將C源程序的主程序中進行讀操作的絕對地址構(gòu)成的集合記作R1,寫操作構(gòu)成的集合記作W1,將C源程序的中斷中進行讀操作的絕對地址構(gòu)成的集合記作R2,寫操作構(gòu)成的集合記作W2 ;
[0030]3.2 令 W1=Closure (E, W1), w2=closure (E, W2),其中 E 為步驟(I)中的間接影響關(guān)系!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所處的間接影響關(guān)系對應的絕對地址;
[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,那么沒有數(shù)據(jù)訪問沖突;否
則判定在集合A中的絕對地址處發(fā)生數(shù)據(jù)訪問沖突。
[0035]4、結(jié)束。
[0036]本發(fā)明說明書中未作詳細描述的內(nèi)容屬本領(lǐng)域技術(shù)人員的公知技術(shù)。
【權(quán)利要求】
1.基于絕對地址匯聚的數(shù)據(jù)訪問沖突檢測方法,其特征在于步驟如下: (1)對C源程序進行語法分析,構(gòu)造源程序中使用的絕對地址集合;利用絕對地址集合,構(gòu)造間接影響關(guān)系;所述的間接影響關(guān)系是一組絕對地址上的一一映射關(guān)系,具有一一映射關(guān)系的兩個絕對地址中,對其中一個絕對地址的寫操作會導致另一個絕對地址的讀操作的結(jié)果發(fā)生變化; (2)根據(jù)C源程序中的中斷響應函數(shù),尋找C源程序包括的所有中斷上下文; (3)對于步驟(2)中確定的每個中斷上下文,進行下列檢查: (31)將C源程序的主程序中進行讀操作的絕對地址構(gòu)成的集合記作R1,寫操作構(gòu)成的集合記作W1,將C源程序的中斷中進行讀操作的絕對地址構(gòu)成的集合記作R2,寫操作構(gòu)成的集合記作W2 ; (32)令W1=Closure (E, W1), w2=closure (E, W2),其中 E 為步驟(1)中的間接影響關(guān)系;Wi=Closure (E, Wi), i=l、2 的計算步驟如下:
(321)令Wi=Wi ; (322)對任意的de Wi,令Wi’=WiU{E(d)};其中E(d)為絕對地址d所處的間接影響關(guān)系對應的絕對地址; (323)如果Wi=Wi'那么Wi=Closure(E, Wi)計算完畢,否則令Wi=Wi',并回到步驟(322); (33)令A=(Wln W2)U(W1 n R2)U(R1 n W2);如果A= 0,那么沒有數(shù)據(jù)訪問沖突;否則判定在集合A中的絕對地址處發(fā)生數(shù)據(jù)訪問沖突。
【文檔編號】G06F9/44GK103699388SQ201310744736
【公開日】2014年4月2日 申請日期:2013年12月30日 優(yōu)先權(quán)日:2013年12月30日
【發(fā)明者】王政, 綦艷霞, 顧斌, 董曉剛, 陳睿, 陳堯, 趙雷, 郭向英 申請人:北京控制工程研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
松桃| 长宁区| 铜鼓县| 延庆县| 长垣县| 醴陵市| 综艺| 塔河县| 永顺县| 裕民县| 蓝山县| 金秀| 突泉县| 合肥市| 阳朔县| 广水市| 合江县| 天津市| 西昌市| 泸水县| 水富县| 中宁县| 河北区| 商水县| 陕西省| 茶陵县| 宁海县| 荆门市| 凉山| 辽中县| 康乐县| 濮阳市| 台中市| 蓬溪县| 抚松县| 府谷县| 双峰县| 财经| 来安县| 博罗县| 陇川县|