欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種用于檢測中斷驅(qū)動(dòng)型程序數(shù)據(jù)競爭的系統(tǒng)的制作方法

文檔序號:6340366閱讀:291來源:國知局
專利名稱:一種用于檢測中斷驅(qū)動(dòng)型程序數(shù)據(jù)競爭的系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種檢測數(shù)據(jù)競爭的系統(tǒng),特別是涉及一種用于檢測中斷驅(qū)動(dòng)型程序 數(shù)據(jù)競爭的系統(tǒng),屬于計(jì)算機(jī)軟件測試與驗(yàn)證技術(shù)。
背景技術(shù)
數(shù)據(jù)競爭是并發(fā)程序中一種復(fù)雜的程序行為,它發(fā)生在多個(gè)并發(fā)執(zhí)行流(如線 程、任務(wù)、中斷)對同一數(shù)據(jù)單元進(jìn)行同時(shí)讀寫,且至少其中一個(gè)操作是寫操作時(shí)。由于數(shù) 據(jù)競爭中涉及的兩次訪問之間的次序不可確定,程序可能會因此產(chǎn)生異常行為,嚴(yán)重時(shí)甚 至?xí)?dǎo)致軟件或系統(tǒng)失效。然而,數(shù)據(jù)競爭具有小概率的特點(diǎn),往往需要在特定的外部環(huán) 境、執(zhí)行流切換條件下才會發(fā)生,且難以復(fù)現(xiàn),對其調(diào)試和測試都很困難。因而,數(shù)據(jù)競爭的 自動(dòng)檢測方法和工具近年來一直都是業(yè)界的重要關(guān)注點(diǎn)。值得注意的是,目前已知的數(shù)據(jù)競爭檢測方法大都面向多線程程序,如微軟 公司的200510063733.0號專利“用于檢測多線程程序中潛在競爭的方法和系統(tǒng)”、ACM Symposium on Operating Systems Principles (SOSP' 2003)中 Engler 等人的"RacerX : Effective, static detection of race conditions and deadlocks,,、ACMSIGS0FT Symposium on the Foundations of Software Engineering (FSE' 2007)中 Voung 等人的 "RELAY static race detection on millions of lines of code”,等等。這些針對多線 程程序的方法大多無法適用于中斷驅(qū)動(dòng)型程序的數(shù)據(jù)競爭檢測,主要原因如下(1)中斷的并發(fā)語義特征、同步、搶占關(guān)系與線程不同。具體來講,對于中斷驅(qū)動(dòng)型 程序,程序編寫者一般通過開關(guān)中斷的方式保證操作不被中斷,而對于多線程程序,程序編 寫者一般采用特定的同步機(jī)制(如同步鎖、信號量等)避免數(shù)據(jù)競爭;中斷往往是由外界條 件觸發(fā),而線程則是由線程調(diào)度器按照一定的算法調(diào)度而獲得執(zhí)行權(quán);中斷的搶占關(guān)系是 非對稱的,即高優(yōu)先級的中斷可以搶占低優(yōu)先級中斷,反之則不然,對于線程,這種關(guān)系是 對稱的。(2)中斷驅(qū)動(dòng)型程序是典型嵌入式軟件,與硬件交互頻繁,運(yùn)行環(huán)境特殊,程序的 執(zhí)行狀態(tài)易被外界改變,因此,在數(shù)據(jù)流分析等方面與傳統(tǒng)程序不同。而另一方面,由于缺乏相應(yīng)的自動(dòng)分析工具,中斷驅(qū)動(dòng)型程序的開發(fā)者一般通過 傳統(tǒng)的軟件測試方法來試圖發(fā)現(xiàn)數(shù)據(jù)競爭,即設(shè)計(jì)測試用例、執(zhí)行測試用例、查看運(yùn)行狀態(tài) 的方式。這種手段針對性不強(qiáng),只能依賴重復(fù)地執(zhí)行軟件并觀察運(yùn)行結(jié)果來檢查數(shù)據(jù)競爭 是否存在,而且,即使在某次測試中發(fā)現(xiàn)了問題,也難以復(fù)現(xiàn);由于測試是無法窮舉所有程 序執(zhí)行狀態(tài)的,很多潛在的數(shù)據(jù)競爭也因此被遺漏掉,造成隱患;此外,嵌入式軟件的運(yùn)行 倚賴外部設(shè)備和環(huán)境,無法在軟件開發(fā)的早期實(shí)施測試活動(dòng),導(dǎo)致數(shù)據(jù)競爭往往只能在后 期階段被發(fā)現(xiàn),此時(shí)缺陷修復(fù)的代價(jià)巨大。

發(fā)明內(nèi)容
本發(fā)明的技術(shù)解決問題是克服現(xiàn)有技術(shù)的不足,提供一種用于檢測中斷驅(qū)動(dòng)型程序數(shù)據(jù)競爭的系統(tǒng),本發(fā)明基于靜態(tài)分析技術(shù),以被檢測程序的目標(biāo)代碼或源代碼為輸 入,獲取被檢測程序的多種狀態(tài)信息,在此基礎(chǔ)上識別出程序中潛在的數(shù)據(jù)競爭,檢測精確度尚。本發(fā)明的技術(shù)解決方案是一種用于檢測中斷驅(qū)動(dòng)型程序數(shù)據(jù)競爭的系統(tǒng),由前 端處理器和數(shù)據(jù)競爭分析引擎組成;所述前端處理器包括反匯編器、詞法/語法分析器、 控制流圖構(gòu)造器、函數(shù)調(diào)用關(guān)系圖構(gòu)造器;所述數(shù)據(jù)競爭分析引擎包括中斷優(yōu)先級分析 模塊、中斷狀態(tài)分析模塊、內(nèi)存訪問分析模塊和競爭條件識別器;反匯編器用于將被測目標(biāo)程序進(jìn)行反匯編并輸出匯編代碼;詞法/語法分析器對被測程序的源代碼或匯編代碼進(jìn)行詞法分析、語法分析,輸 出抽象語法樹和符號表;控制流圖構(gòu)造器利用抽象語法樹和符號表為被測程序中每個(gè)函數(shù)構(gòu)造出控制流 圖;函數(shù)調(diào)用關(guān)系圖構(gòu)造器利用抽象語法樹和符號表為被測程序構(gòu)造出函數(shù)調(diào)用關(guān) 系圖;中斷優(yōu)先級分析模塊,用于分析控制流圖中每個(gè)結(jié)點(diǎn)處對應(yīng)的中斷優(yōu)先級狀態(tài), 中斷優(yōu)先級分析方法為(1)從被測程序的控制流圖入口點(diǎn)處開始進(jìn)行遍歷并記錄每個(gè)控制流圖結(jié)點(diǎn)處的 程序狀態(tài);(2)設(shè)結(jié)點(diǎn)N當(dāng)前IP寄存器的狀態(tài)為S ;(3)如果結(jié)點(diǎn)N中的語句修改了 IP寄存器的值,設(shè)值為X,則更新結(jié)點(diǎn)N的狀態(tài)S ={X};(4)如果結(jié)點(diǎn)N中包含函數(shù)調(diào)用,設(shè)被調(diào)用函數(shù)為F,則首先查找是否存在函數(shù)F 的緩存記錄,如果存在函數(shù)F的緩存記錄則應(yīng)用緩存,并取得緩存中記錄的輸出狀態(tài)為S1, 將IP寄存器狀態(tài)更新為S1 ;如果不存在函數(shù)F的緩存記錄則對函數(shù)F的控制流程圖進(jìn)行分 析,根據(jù)分析結(jié)果得到函數(shù)F的輸出狀態(tài)S2,將IP寄存器狀態(tài)更新為S2,并利用函數(shù)F的輸 出狀態(tài)&更新函數(shù)F的緩存記錄,緩存中記錄的是輸入狀態(tài)與輸出狀態(tài)的對應(yīng)關(guān)系;(5)根據(jù)結(jié)點(diǎn)N的IP狀態(tài)判斷該結(jié)點(diǎn)N的優(yōu)先級;中斷狀態(tài)分析模塊,用于計(jì)算控制流圖中每個(gè)結(jié)點(diǎn)處對應(yīng)的中斷使能狀態(tài);中斷 狀態(tài)分析的方法為(a)從被測程序的控制流圖入口點(diǎn)處開始進(jìn)行遍歷并記錄每個(gè)控制流圖結(jié)點(diǎn)處的 程序狀態(tài);(b)設(shè)結(jié)點(diǎn)N當(dāng)前IE寄存器的狀態(tài)為S ;(c)如果結(jié)點(diǎn)N中的語句修改了 IE寄存器的值,設(shè)值為X,則更新結(jié)點(diǎn)N的狀態(tài)S ={X};(d)如果結(jié)點(diǎn)N中包含函數(shù)調(diào)用,設(shè)被調(diào)用函數(shù)為F,則首先查找是否存在函數(shù)F 的緩存記錄,如果存在函數(shù)F的緩存記錄則應(yīng)用緩存,并取得緩存中記錄的輸出狀態(tài)為S1, 將IE寄存器狀態(tài)更新為S1 ;如果不存在函數(shù)F的緩存記錄則對函數(shù)F的控制流程圖進(jìn)行分 析,根據(jù)分析結(jié)果得到函數(shù)F的輸出狀態(tài)S2,將IE寄存器狀態(tài)更新為S2,并利用函數(shù)F的輸 出狀態(tài)&更新函數(shù)F的緩存記錄,緩存中記錄的是輸入狀態(tài)與輸出狀態(tài)的對應(yīng)關(guān)系;
(e)根據(jù)結(jié)點(diǎn)N的IP狀態(tài)以及IE狀態(tài)判斷該結(jié)點(diǎn)N是否允許中斷,對于每個(gè)允許 進(jìn)入的中斷I的控制流程圖進(jìn)行分析,根據(jù)分析結(jié)果得到中斷I的輸出狀態(tài)為s3,IE寄存 器狀態(tài)更新為S = S U &;內(nèi)存訪問分析模塊,用于獲取控制流圖中每個(gè)結(jié)點(diǎn)處的數(shù)據(jù)讀寫情況,根據(jù)每個(gè) 結(jié)點(diǎn)處的數(shù)據(jù)讀寫情況計(jì)算出每個(gè)中斷處理程序的內(nèi)存訪問集合;每個(gè)中斷處理程序內(nèi)存 訪問集合的計(jì)算方法為(A)從中斷處理程序A的入口處開始遍歷控制流程圖,設(shè)置A的內(nèi)存訪問集合R為 空;(B)將該節(jié)點(diǎn)的內(nèi)存訪問狀態(tài)集合合并到R中;(C)若該節(jié)點(diǎn)是函數(shù)調(diào)用,則把被調(diào)用函數(shù)的內(nèi)存訪問集合合并到R中;(D)根據(jù)該節(jié)點(diǎn)的中斷使能狀態(tài)和中斷優(yōu)先級狀態(tài),將優(yōu)先級大于A且中斷使能 允許的中斷的內(nèi)存訪問集合合并到R ;競爭條件識別器,根據(jù)中斷優(yōu)先級分析模塊、中斷狀態(tài)分析模塊和的內(nèi)存訪問分 析模塊的分析結(jié)果,識別出每個(gè)被測程序結(jié)點(diǎn)處存在的數(shù)據(jù)競爭,并生成數(shù)據(jù)競爭檢測報(bào)

1=1 O本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于本發(fā)明采用靜態(tài)檢測方法,以源代碼或匯編 代碼為輸入,無需運(yùn)行被測程序,能夠在軟件開發(fā)的早期階段應(yīng)用,自動(dòng)化程度較高;對中 斷使能狀態(tài)進(jìn)行了迭代的過程間分析,其中,“迭代”能夠最大限度地收集所有可能的中斷 切換情況,減少數(shù)據(jù)競爭檢測的漏報(bào);“過程間”考慮了函數(shù)調(diào)用以及中斷進(jìn)入對程序狀態(tài) 的影響,在過程間分析中采用了狀態(tài)緩存策略,避免在相同上下文條件下對同一函數(shù)的重 復(fù)分析,提高了檢測的精確度和檢測效率。


圖1為本發(fā)明檢測系統(tǒng)的組成結(jié)構(gòu)框圖;圖2為本發(fā)明檢測系統(tǒng)的檢測流程圖;圖3為本發(fā)明中斷狀態(tài)分析模塊的分析流程圖。
具體實(shí)施例方式如圖1所示,一種用于檢測中斷驅(qū)動(dòng)型程序中數(shù)據(jù)競爭的系統(tǒng),由前端處理器和 數(shù)據(jù)競爭分析引擎組成;所述前端處理器包括反匯編器、詞法/語法分析器、控制流圖構(gòu) 造器、函數(shù)調(diào)用關(guān)系圖構(gòu)造器;所述數(shù)據(jù)競爭分析引擎包括中斷優(yōu)先級分析模塊、中斷狀 態(tài)分析模塊、內(nèi)存訪問分析模塊和競爭條件識別器反匯編器用于將被測目標(biāo)程序進(jìn)行反匯編并輸出匯編代碼;詞法/語法分析器對被測程序的源代碼或匯編代碼進(jìn)行詞法分析、語法分析,輸 出抽象語法樹和符號表;若用戶給定的是被測程序的目標(biāo)代碼,則首先對其進(jìn)行反匯編得 到對應(yīng)的匯編代碼,作為下一步分析的輸入代碼;若用戶給定的是源程序,則源程序作為輸 入代碼;控制流圖構(gòu)造器利用抽象語法樹和符號表,為被測程序中每個(gè)函數(shù)構(gòu)造出控制 流函數(shù)調(diào)用關(guān)系圖構(gòu)造器利用抽象語法樹和符號表,為被測程序構(gòu)造出函數(shù)調(diào)用 關(guān)系圖;調(diào)用關(guān)系圖是一個(gè)有向圖,其中每個(gè)結(jié)點(diǎn)代表一個(gè)函數(shù),每條邊代表邊的兩個(gè)頂點(diǎn) 代表的函數(shù)之間存在調(diào)用關(guān)系;控制流圖是程序中函數(shù)的一種中間表示,其與程序源代碼 等價(jià),是一個(gè)有向圖,其中每個(gè)結(jié)點(diǎn)表示一個(gè)語句或一個(gè)基本塊(連續(xù)且沒有分支跳轉(zhuǎn)語 句的語句序列),每條邊表示程序執(zhí)行過程中的可能選擇,控制流圖類似程序的一個(gè)流程 圖,將程序轉(zhuǎn)化為圖進(jìn)行分析是程序靜態(tài)分析領(lǐng)域的一種常規(guī)做法。中斷優(yōu)先級分析模塊,用于分析控制流圖中每個(gè)結(jié)點(diǎn)處對應(yīng)的中斷優(yōu)先級狀態(tài), 中斷優(yōu)先級分析方法為(1)從被測程序的控制流圖入口點(diǎn)處開始進(jìn)行遍歷并記錄每個(gè)控制流圖結(jié)點(diǎn)處的 程序狀態(tài);(2)設(shè)結(jié)點(diǎn)N當(dāng)前IP寄存器的狀態(tài)為S ;(3)如果結(jié)點(diǎn)N中的語句修改了 IP寄存器的值,設(shè)值為X,則更新結(jié)點(diǎn)N的狀態(tài)S ={X};(4)如果結(jié)點(diǎn)N中包含函數(shù)調(diào)用,設(shè)被調(diào)用函數(shù)為F,則首先查找是否存在函數(shù)F 的緩存記錄,如果存在函數(shù)F的緩存記錄則應(yīng)用緩存,并取得緩存中記錄的輸出狀態(tài)為S1, 將IP寄存器狀態(tài)更新為S1 ;如果不存在函數(shù)F的緩存記錄則對函數(shù)F的控制流程圖進(jìn)行分 析,根據(jù)分析結(jié)果得到函數(shù)F的輸出狀態(tài)S2,將IP寄存器狀態(tài)更新為S2,并利用函數(shù)F的輸 出狀態(tài)&更新函數(shù)F的緩存記錄,緩存中記錄的是輸入狀態(tài)與輸出狀態(tài)的對應(yīng)關(guān)系;(5)根據(jù)結(jié)點(diǎn)N的IP狀態(tài)判斷該結(jié)點(diǎn)N的優(yōu)先級;中斷狀態(tài)分析模塊,用于計(jì)算控制流圖中每個(gè)結(jié)點(diǎn)處對應(yīng)的中斷使能狀態(tài),即哪 些中斷使能是打開的,哪些是關(guān)閉的;中斷狀態(tài)分析的方法為(a)從被測程序的控制流圖入口點(diǎn)處開始進(jìn)行遍歷并記錄每個(gè)控制流圖結(jié)點(diǎn)處的 程序狀態(tài);(b)設(shè)結(jié)點(diǎn)N當(dāng)前IE寄存器的狀態(tài)為S ;(c)如果結(jié)點(diǎn)N中的語句修改了 IE寄存器的值,設(shè)值為X,則更新結(jié)點(diǎn)N的狀態(tài)S ={X};(d)如果結(jié)點(diǎn)N中包含函數(shù)調(diào)用,設(shè)被調(diào)用函數(shù)為F,則首先查找是否存在函數(shù)F 的緩存記錄,如果存在函數(shù)F的緩存記錄則應(yīng)用緩存,并取得緩存中記錄的輸出狀態(tài)為S1, 將IE寄存器狀態(tài)更新為S1 ;如果不存在函數(shù)F的緩存記錄則對函數(shù)F的控制流程圖進(jìn)行分 析,根據(jù)分析結(jié)果得到函數(shù)F的輸出狀態(tài)S2,將IE寄存器狀態(tài)更新為S2,并利用函數(shù)F的輸 出狀態(tài)&更新函數(shù)F的緩存記錄,緩存中記錄的是輸入狀態(tài)與輸出狀態(tài)的對應(yīng)關(guān)系;(e)根據(jù)結(jié)點(diǎn)N的IP狀態(tài)以及IE狀態(tài)判斷該結(jié)點(diǎn)N是否允許中斷,對于每個(gè)允許 進(jìn)入的中斷I的控制流程圖進(jìn)行分析,根據(jù)分析結(jié)果得到中斷I的輸出狀態(tài)為s3,IE寄存 器狀態(tài)更新為S = S U &;內(nèi)存訪問分析模塊,獲取CFG中每個(gè)結(jié)點(diǎn)的數(shù)據(jù)讀寫情況,即對哪些共享數(shù)據(jù)進(jìn) 行了訪問,是讀操作還是寫操作;用于獲取控制流圖中每個(gè)結(jié)點(diǎn)處的數(shù)據(jù)讀寫情況,根據(jù)每 個(gè)結(jié)點(diǎn)處的數(shù)據(jù)讀寫情況計(jì)算出每個(gè)中斷處理程序的內(nèi)存訪問集合;每個(gè)中斷處理程序內(nèi) 存訪問集合的計(jì)算方法為(A)從中斷處理程序A的入口處開始遍歷控制流程圖,設(shè)置A的內(nèi)存訪問集合R為空;(B)將該節(jié)點(diǎn)的內(nèi)存訪問狀態(tài)集合合并到R中;(C)若該節(jié)點(diǎn)是函數(shù)調(diào)用,則把被調(diào)用函數(shù)的內(nèi)存訪問集合合并到R中;(D)根據(jù)該節(jié)點(diǎn)的中斷使能狀態(tài)和中斷優(yōu)先級狀態(tài),將優(yōu)先級大于A且中斷使能 允許的中斷的內(nèi)存訪問集合合并到R ;競爭條件識別器,根據(jù)中斷優(yōu)先級分析模塊、中斷狀態(tài)分析模塊和的內(nèi)存訪問分 析模塊的分析結(jié)果,識別出每個(gè)被測程序結(jié)點(diǎn)處存在的數(shù)據(jù)競爭,并生成數(shù)據(jù)競爭檢測報(bào) 告。例如,當(dāng)前結(jié)點(diǎn)對內(nèi)存單元或變量M進(jìn)行訪問時(shí),若中斷進(jìn)入,也對M進(jìn)行了訪問,則根 據(jù)表1可確定此次訪問是否造成數(shù)據(jù)競爭。
權(quán)利要求
1. 一種用于檢測中斷驅(qū)動(dòng)型程序數(shù)據(jù)競爭的系統(tǒng),其特征在于由前端處理器和數(shù)據(jù) 競爭分析引擎組成;所述前端處理器包括反匯編器、詞法/語法分析器、控制流圖構(gòu)造器、 函數(shù)調(diào)用關(guān)系圖構(gòu)造器;所述數(shù)據(jù)競爭分析引擎包括中斷優(yōu)先級分析模塊、中斷狀態(tài)分 析模塊、內(nèi)存訪問分析模塊和競爭條件識別器;反匯編器用于將被測目標(biāo)程序進(jìn)行反匯編并輸出匯編代碼; 詞法/語法分析器對被測程序的源代碼或匯編代碼進(jìn)行詞法分析、語法分析,輸出抽 象語法樹和符號表;控制流圖構(gòu)造器利用抽象語法樹和符號表為被測程序中每個(gè)函數(shù)構(gòu)造出控制流圖; 函數(shù)調(diào)用關(guān)系圖構(gòu)造器利用抽象語法樹和符號表為被測程序構(gòu)造出函數(shù)調(diào)用關(guān)系圖;中斷優(yōu)先級分析模塊,用于分析控制流圖中每個(gè)結(jié)點(diǎn)處對應(yīng)的中斷優(yōu)先級狀態(tài),中斷 優(yōu)先級分析方法為(1)從被測程序的控制流圖入口點(diǎn)處開始進(jìn)行遍歷并記錄每個(gè)控制流圖結(jié)點(diǎn)處的程序 狀態(tài);(2)設(shè)結(jié)點(diǎn)N當(dāng)前IP寄存器的狀態(tài)為S;(3)如果結(jié)點(diǎn)N中的語句修改了IP寄存器的值,設(shè)值為X,則更新結(jié)點(diǎn)N的狀態(tài)S ={X};(4)如果結(jié)點(diǎn)N中包含函數(shù)調(diào)用,設(shè)被調(diào)用函數(shù)為F,則首先查找是否存在函數(shù)F的緩 存記錄,如果存在函數(shù)F的緩存記錄則應(yīng)用緩存,并取得緩存中記錄的輸出狀態(tài)為S1,將IP 寄存器狀態(tài)更新為S1 ;如果不存在函數(shù)F的緩存記錄則對函數(shù)F的控制流程圖進(jìn)行分析,根 據(jù)分析結(jié)果得到函數(shù)F的輸出狀態(tài)S2,將IP寄存器狀態(tài)更新為&,并利用函數(shù)F的輸出狀 態(tài)&更新函數(shù)F的緩存記錄,緩存中記錄的是輸入狀態(tài)與輸出狀態(tài)的對應(yīng)關(guān)系;(5)根據(jù)結(jié)點(diǎn)N的IP狀態(tài)判斷該結(jié)點(diǎn)N的優(yōu)先級;中斷狀態(tài)分析模塊,用于計(jì)算控制流圖中每個(gè)結(jié)點(diǎn)處對應(yīng)的中斷使能狀態(tài);中斷狀態(tài) 分析的方法為(a)從被測程序的控制流圖入口點(diǎn)處開始進(jìn)行遍歷并記錄每個(gè)控制流圖結(jié)點(diǎn)處的程序 狀態(tài);(b)設(shè)結(jié)點(diǎn)N當(dāng)前IE寄存器的狀態(tài)為S;(c)如果結(jié)點(diǎn)N中的語句修改了IE寄存器的值,設(shè)值為X,則更新結(jié)點(diǎn)N的狀態(tài)S ={X};(d)如果結(jié)點(diǎn)N中包含函數(shù)調(diào)用,設(shè)被調(diào)用函數(shù)為F,則首先查找是否存在函數(shù)F的緩 存記錄,如果存在函數(shù)F的緩存記錄則應(yīng)用緩存,并取得緩存中記錄的輸出狀態(tài)為S1,將IE 寄存器狀態(tài)更新為S1 ;如果不存在函數(shù)F的緩存記錄則對函數(shù)F的控制流程圖進(jìn)行分析,根 據(jù)分析結(jié)果得到函數(shù)F的輸出狀態(tài)S2,將IE寄存器狀態(tài)更新為&,并利用函數(shù)F的輸出狀 態(tài)&更新函數(shù)F的緩存記錄,緩存中記錄的是輸入狀態(tài)與輸出狀態(tài)的對應(yīng)關(guān)系;(e)根據(jù)結(jié)點(diǎn)N的IP狀態(tài)以及IE狀態(tài)判斷該結(jié)點(diǎn)N是否允許中斷,對于每個(gè)允許進(jìn)入 的中斷I的控制流程圖進(jìn)行分析,根據(jù)分析結(jié)果得到中斷I的輸出狀態(tài)為S3,IE寄存器狀 態(tài)更新為S = S U &;內(nèi)存訪問分析模塊,用于獲取控制流圖中每個(gè)結(jié)點(diǎn)處的數(shù)據(jù)讀寫情況,根據(jù)每個(gè)結(jié)點(diǎn)處的數(shù)據(jù)讀寫情況計(jì)算出每個(gè)中斷處理程序的內(nèi)存訪問集合;每個(gè)中斷處理程序內(nèi)存訪問 集合的計(jì)算方法為(A)從中斷處理程序A的入口處開始遍歷控制流程圖,設(shè)置A的內(nèi)存訪問集合R為空;(B)將該節(jié)點(diǎn)的內(nèi)存訪問狀態(tài)集合合并到R中;(C)若該節(jié)點(diǎn)是函數(shù)調(diào)用,則把被調(diào)用函數(shù)的內(nèi)存訪問集合合并到R中;(D)根據(jù)該節(jié)點(diǎn)的中斷使能狀態(tài)和中斷優(yōu)先級狀態(tài),將優(yōu)先級大于A且中斷使能允許 的中斷的內(nèi)存訪問集合合并到R ;競爭條件識別器,根據(jù)中斷優(yōu)先級分析模塊、中斷狀態(tài)分析模塊和的內(nèi)存訪問分析模 塊的分析結(jié)果,識別出每個(gè)被測程序結(jié)點(diǎn)處存在的數(shù)據(jù)競爭,并生成數(shù)據(jù)競爭檢測報(bào)告。
全文摘要
本發(fā)明公開了一種用于檢測中斷驅(qū)動(dòng)型程序數(shù)據(jù)競爭的系統(tǒng),該系統(tǒng)由前端處理器和數(shù)據(jù)競爭分析引擎組成;其中前端處理器包括反匯編器、詞法/語法分析器、控制流圖構(gòu)造器、函數(shù)調(diào)用關(guān)系圖構(gòu)造器;數(shù)據(jù)競爭分析引擎包括中斷優(yōu)先級分析模塊、中斷狀態(tài)分析模塊、內(nèi)存訪問分析模塊和競爭條件識別器。本發(fā)明采用靜態(tài)檢測方法,以源代碼或匯編代碼為輸入,無需運(yùn)行被測程序,能夠在軟件開發(fā)的早期階段應(yīng)用,自動(dòng)化程度較高;對中斷使能狀態(tài)進(jìn)行了迭代的過程間分析,其中,“迭代”能夠最大限度地收集所有可能的中斷切換情況,減少數(shù)據(jù)競爭檢測的漏報(bào);“過程間”考慮了函數(shù)調(diào)用以及中斷進(jìn)入對程序狀態(tài)的影響,提高了檢測的精確度和檢測效率。
文檔編號G06F9/46GK102063328SQ20101061169
公開日2011年5月18日 申請日期2010年12月17日 優(yōu)先權(quán)日2010年12月17日
發(fā)明者于志杰, 侯成杰, 吳瑾, 左萬娟, 張西超, 張金巍, 曾霞, 武占峰, 段永顥, 董燕, 郭向英, 陳睿, 魏鵬 申請人:北京控制工程研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
五华县| 延川县| 资中县| 陆河县| 安泽县| 苏尼特右旗| 温州市| 容城县| 克拉玛依市| 抚顺市| 张家口市| 台州市| 平安县| 西安市| 海宁市| 永新县| 乐昌市| 万宁市| 鹿邑县| 太和县| 乐山市| 巴彦淖尔市| 洛南县| 娱乐| 铜川市| 灵璧县| 乐山市| 湘西| 精河县| 彝良县| 屏东市| 瓦房店市| 郎溪县| 招远市| 天门市| 石首市| 南通市| 静宁县| 济阳县| 孟村| 和静县|