專利名稱:模型檢驗安全性的參數(shù)化線程的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機系統(tǒng)驗證,更具體地說,涉及并發(fā)程序的驗證, 所述并發(fā)程序開發(fā)了包括同 一硬件或軟件組件的多個副本的計算機 系統(tǒng)的參凄史4b性質(zhì)(parameterized quality)。
背景技術(shù):
為了確保計算機系統(tǒng)正確運作并且所獲結(jié)果可信,需要計算機驗 證。 一種形式的驗證是測試。在測試時,對一組輸入檢查系統(tǒng)的實際 行為,并將其與預(yù)期結(jié)果進(jìn)行匹配。鑒于巨大或無窮數(shù)量的可能輸入, 因此證實系統(tǒng)在所有情形中都正確運轉(zhuǎn)是不可能的。
驗證試圖解決這些問題。驗證提供用于模擬系統(tǒng)行為的數(shù)學(xué)或模 型基礎(chǔ)。定義模型及其預(yù)期行為。通常將機器建模成狀態(tài)隨時間演變 的系統(tǒng),該模型包括對狀態(tài)空間以及系統(tǒng)如何遍歷狀態(tài)空間的說明。 已表明,時序邏輯可用于表示反應(yīng)式系統(tǒng)的行為。模型檢驗(model-checking)的驗證方法包括取所考慮系統(tǒng)的數(shù)學(xué)模型并檢驗 模型內(nèi)的時序邏輯公式的有效性。
已知,所有方法面臨的主要問題是狀態(tài)爆炸。狀態(tài)爆炸是指,所 考慮系統(tǒng)的狀態(tài)空間隨著所用存儲器(如寄存器、或程序變量、指針 等)的量的增大而快速(如按指數(shù))增長。這限制了驗證方法。
多線程是開發(fā)計算機系統(tǒng)的不同組件間的并行性的標(biāo)準(zhǔn)方法。因 此,并發(fā)多線程程序的使用正變得普及。實例包括操作系統(tǒng)、數(shù)據(jù)庫、 嵌入式系統(tǒng)(蜂窩電話、多媒體消費型產(chǎn)品)等。因為驗證通常不適 用于大規(guī)模并發(fā)程序,所以對平衡(leverage)靜態(tài)分析技術(shù)、如用于 調(diào)試多線程程序的過程間數(shù)據(jù)流分析有著濃厚的興趣。盡管已表明過 程間數(shù)據(jù)流分析是查找順序程序的錯誤(bug)的非常有效的技術(shù), 但是卻很少有與將這種數(shù)據(jù)流分析擴展到并發(fā)域有關(guān)的工作。
發(fā)明內(nèi)容
數(shù)據(jù)流分析平衡下推系統(tǒng)(pushdown system)的非常強大的范例 的使用,該范例是可以統(tǒng)一方式表示許多不同種類的數(shù)據(jù)流分析的廣 義框架。對并發(fā)域的PDS的模擬是交互式PDS的模型。不幸的是, 模型檢驗對交互式PDS的問題只對于非常有限種類的性質(zhì)是可判定 的。
近年來,下推系統(tǒng)(PDS)已經(jīng)成為用于對順序程序的過程間數(shù)
據(jù)流分析有效編碼的強大的統(tǒng)一框架。PDS具有對應(yīng)于程序變量的估
值的有限控制部分和提供模型遞歸方式的棧。然后,數(shù)據(jù)流分析利用
這樣的事實PDS的模型檢驗問題對于極具表達(dá)力的屬性(property)
種類(線性和分支時間)可判定。這種強大的框架不僅可用于對許多
不同數(shù)據(jù)流分析進(jìn)行編碼,而且在多種情況下,還可嚴(yán)格地導(dǎo)致比經(jīng)
典的過程間數(shù)據(jù)流分析所提供的數(shù)據(jù)流框架更具表達(dá)力的數(shù)據(jù)流框
恕 木。
這突出了 (i)數(shù)據(jù)流分析與PDS的模型檢驗問題之間的緊密關(guān)聯(lián);以及(ii)PDS作為對程序建模的自然框架的有用性。與順序情形 類似,并發(fā)多線程程序的過程間數(shù)據(jù)流分析可用公式表示為對交互 PDS的模型檢驗問題。但是,此問題不像單PDS的問題那樣可堅定地 判定。實際上,關(guān)^t的不可判定性結(jié)果表明,對于只具有兩個經(jīng)由CCS 類型(CCS或通信系統(tǒng)演算是書寫并發(fā)程序的語言)的成對會合 (pairwise rendezvous)同步的PDS的系統(tǒng),即使是類似可達(dá)性的筒 單屬性也變得不可判定??杀砻?,不可判定性結(jié)果即使對經(jīng)由鎖定進(jìn) 行交互的PDS也有效。對于經(jīng)由諸如鎖定、成對和異步會合以及廣播 的每一種標(biāo)準(zhǔn)同步原語進(jìn)行交互的PDS,可精確地勾畫出可判定性/ 不可判定性邊界。對于經(jīng)由鎖定進(jìn)行交互的PDS,如果鎖定是嵌套式
的且正確性屬性限于片段L(X,F(xiàn),i),則模型檢驗問題可判定。但是, 如果允許PDS經(jīng)由更具表達(dá)力的原語、如成對會合和廣播進(jìn)行交互, 則只能對(非常有限的)片段L(G, X)保證可判定性。這里使用
L(Opi,…,Opk)(其中Opi e {X,F,U,G;})來表示包含定式EF的公式的片段, 其中F是肯定范式(positive normal form)的雙指數(shù)(double-indexed) 線性時序邏輯(LTL)公式(其中只否定原子命題),它是利用操作
數(shù)Opi..... Opk以及布爾連接符V和A構(gòu)建而成的。
這些結(jié)果之所以有用是因為,它們精確地識別了雙指數(shù)LTL的模 型檢驗可判定的那些片段,從而改善了對位于并發(fā)程序的數(shù)據(jù)流分析 的極其核心的重要問題的理解。但是,作為不幸的推論,我們認(rèn)為, 對于經(jīng)由諸如會合和廣播的常用原語進(jìn)行交互的PDS,無法對例如數(shù) 據(jù)竟?fàn)幍目删幋a為成對可達(dá)性、例如定式EF(dAc2)的公式的屬性進(jìn) 行模型檢驗。這令人沮喪,因為數(shù)據(jù)竟?fàn)幾杂墒顷P(guān)于并發(fā)程序的將要 檢驗的最基本的屬性之一。對這些結(jié)果的分析顯示,對交互式下推系 統(tǒng)進(jìn)行更易于處理的分析的根本障礙是檢驗兩種上下文無關(guān)(context free)語言的交集的非空性的不可判定性。這意味著,在包含兩個PDS 的系統(tǒng)中,如果這兩個PDS之間的耦合強到足夠接受這些PDS所接 受的上下文無關(guān)語言的交集,則模型檢驗問題變得不可判定。
7這種強耦合可通過以下方法達(dá)到(i)使同步原語具有足夠強的表 達(dá)力,例如成對會合或廣播;或(ii)使正在進(jìn)行模型檢驗的屬性足夠 強。原則上,這是并發(fā)程序的數(shù)據(jù)流分析的可判定性中的巨大障礙。
但是,我們利用這樣一個關(guān)鍵觀察結(jié)果實際上,系統(tǒng)往往是參 數(shù)化的,即系統(tǒng)包含幾種基本類型的子組件的多個副本。值得強調(diào)的 是,由于通常沒有很好的理由要非常不同地設(shè)計系統(tǒng)這一 簡單事實, 所以這種系統(tǒng)設(shè)計范例(即,復(fù)制)實際上較為重要。出于經(jīng)濟原因, 利用和再利用同一個基本子組件的多個副本明顯有優(yōu)勢。其中,實例 包括用于聯(lián)網(wǎng)、高速緩存一致性、同步的重要協(xié)議以及運行多線程軟 件、設(shè)備驅(qū)動程序的多核體系結(jié)構(gòu)。在參數(shù)化上下文中,模型檢驗問 題通常稱為參數(shù)化模型檢驗問題(PMCP),它將判定時序?qū)傩允欠?對包含模板進(jìn)程U的任意數(shù)量n個副本的系統(tǒng)ljn有效。實際上,希 望為不只包含2個或3個執(zhí)行給定設(shè)備驅(qū)動程序的線程、而是包含任 意數(shù)量的線程的系統(tǒng)建立數(shù)據(jù)竟?fàn)幾杂伞_@顯然很重要,因為具有固 定數(shù)量的線程的系統(tǒng)的正確性本質(zhì)上并沒有為任意數(shù)量的線程建立 正確性。實際上,已經(jīng)有多個驅(qū)動程序?qū)嵗鼈兘?jīng)證實對于2進(jìn)程 實例是正確的,但對于3進(jìn)程實例則不正確。
當(dāng)可將U建模為有限狀態(tài)標(biāo)示轉(zhuǎn)換系統(tǒng)時,存在PMCP情形。很 難將程序、尤其是遞歸如實地建模為有限狀態(tài)系統(tǒng)。可將程序更準(zhǔn)確 且自然地建模為PDS,對于PDS存在很少的現(xiàn)有工作。因此,對經(jīng)由 諸如成對和異步會合、廣播、鎖定和布爾保護(hù)——合取(conjunctive) 和析取(disjunctive)的每一種標(biāo)準(zhǔn)通信原語進(jìn)行交互的PDS考慮 PMCP。我們集中在k-階(k-wise)可達(dá)性上,例如定式EF(dA...Ack)
的正確性,其中d..... Ck是對模板建模的PDS的控制狀態(tài)。注意,
可將數(shù)據(jù)竟?fàn)幈硎緸槌蓪蛇_(dá)性。
一種用于計算計算機系統(tǒng)的并發(fā)程序、例如控制計算機硬件(如 磁盤驅(qū)動器、音頻揚聲器等)的設(shè)備驅(qū)動程序中的數(shù)據(jù)流的系統(tǒng)和方 法包括給定包括多個類似組件的并發(fā)程序,為并發(fā)程序間的交互初始化可達(dá)控制狀態(tài)集合?;谠摽蛇_(dá)控制狀態(tài)集合,去除控制狀態(tài)之 間的同步構(gòu)造。用內(nèi)部轉(zhuǎn)換取代同步構(gòu)造。添加通過同步構(gòu)造的去除 而揭示的新可達(dá)控制狀態(tài),其中,這些新可達(dá)控制狀態(tài)是通過利用對 單線程進(jìn)行模型檢驗而發(fā)現(xiàn)的。通過審查完整的可達(dá)控制狀態(tài)集合來 驗證上述多個并發(fā)程序的數(shù)據(jù)竟?fàn)幾杂伞?br>
另 一種用于計算計算機系統(tǒng)的計算機程序中的數(shù)據(jù)流的系統(tǒng)和
方法包括將并發(fā)程序建模為具有多種配置的下推系統(tǒng);初始化可達(dá) 控制狀態(tài)集合;基于該可達(dá)控制狀態(tài)集合,去除同步構(gòu)造;用內(nèi)部轉(zhuǎn) 換取代同步構(gòu)造;對系統(tǒng)進(jìn)行模型檢驗以確定上下文無關(guān)可達(dá)性,以 便找到單線程的新控制狀態(tài);添加通過模型檢驗所揭示的新可達(dá)控制 狀態(tài);重復(fù)進(jìn)行,直到找不到新控制狀態(tài)為止;以及,基于完整的可 達(dá)控制狀態(tài)集合解決參數(shù)化模型檢驗問題。
通過結(jié)合附圖閱讀以下對其說明性實施例的詳細(xì)描述,這些及其 它特征和優(yōu)點將變得顯而易見。
本公開將參照附圖在優(yōu)選實施例的以下描述中提供細(xì)節(jié),附圖
中
圖1是根據(jù)說明性實施例示出用于解決參數(shù)化模型檢驗問題的系 統(tǒng)/方法的框圖/流程圖2是根據(jù)本發(fā)明原理示出用于說明操作的模板進(jìn)程U的示圖, 該模板進(jìn)程U具有控制狀態(tài)c和轉(zhuǎn)換符號!和?;
圖3是根據(jù)本發(fā)明原理示出定點計算的示圖,其中通過數(shù)次迭代 示出進(jìn)展;
圖4是根據(jù)本發(fā)明原理用于說明根據(jù)另一實施例的操作的模板U 的示圖,該模板U具有用于狀態(tài)c之間的轉(zhuǎn)換的析耳又保護(hù);以及
圖5是根據(jù)本發(fā)明原理示出定點計算的示圖,其中通過數(shù)次迭代 示出進(jìn)展。
具體實施例方式
本發(fā)明實施例涉及計算機系統(tǒng)驗證,更具體地說,涉及諸如用于 控制硬件組件(如磁盤驅(qū)動器、音頻揚聲器等)的設(shè)備驅(qū)動程序的并 發(fā)程序的驗證。在尤其有用的實施例中,開發(fā)計算機系統(tǒng)的參數(shù)化性 質(zhì),因為并發(fā)程序包含同一硬件或軟件組件的多個副本。此外,本發(fā) 明實施例適用于其它應(yīng)用,例如在諸如蜂窩電話、個人數(shù)字助理
(PDA)的移動設(shè)備中使用的嵌入式軟件、數(shù)據(jù)庫軟件、SQL服務(wù)器、 例如web瀏覽器(Firefox 、 Explorer )的應(yīng)用級軟件或利用并發(fā) 性的任何應(yīng)用。
交互式下推系統(tǒng)(pushdown system)的模型檢驗是對并發(fā)程序進(jìn) 行數(shù)據(jù)流分析時潛在的核心問題。但是,它只對非常有限的時序邏輯 片段可判定。根本的障礙是檢驗兩種上下文無關(guān)語言的交集的非空性 的不可判定性。通過使同步原語具有足夠強的表達(dá)力或使正在進(jìn)行模 型檢驗的屬性足夠強而可以精確地接受這些PDS所接受的上下文無 關(guān)語言的交集來耦合兩種不同的下推系統(tǒng)(PDS)并不難。這導(dǎo)致模 型檢驗問題的不可判定性。但是,根據(jù)本發(fā)明原理,利用將多種重要 種類的并發(fā)系統(tǒng)參數(shù)化,即這些種類包括幾種基本類型的組件的多個 復(fù)制副本。
根據(jù)本發(fā)明原理,不需要解決這個一般難題。利用這樣的事實 多個并發(fā)系統(tǒng)是參數(shù)化的,即它們包括同 一基本組件的多個復(fù)制副 本。實際上,對于用于聯(lián)網(wǎng)、高速緩存一致性、同步的大多數(shù)分布式 協(xié)議,實現(xiàn)該協(xié)議的同一準(zhǔn)確代碼片段在不同機器上運行,從而使它 變得參數(shù)化?;ヂ?lián)網(wǎng)被認(rèn)為是計算機的網(wǎng)絡(luò),每臺計算機運行TCP/IP 協(xié)議。其它實例包括具有多線程的多核體系結(jié)構(gòu)。實際上,認(rèn)為設(shè)備 驅(qū)動程序可正確運行而與執(zhí)行它的線程的數(shù)量無關(guān)。
為參數(shù)化多線程程序提供新的有效過程間數(shù)據(jù)流分析系統(tǒng)和方 法。問題縮減為對交互式PDS進(jìn)行模型檢驗的問題,其中所有PDS是彼此的副本。到目前為止,關(guān)于對參數(shù)化程序進(jìn)行分析的先前工作
局限于在線程(PDS )之間沒有有效通信的模型,因此很少有實際價 值。在本公開中,已考慮了更強大且現(xiàn)實可行的模型,其中PDS可經(jīng) 由鎖定、會合(例如,來自Java 的WaitNotify ())或廣播(例如, 來自Java 的Wait NotifyAll ())進(jìn)行交互。因此,將過程間分析擴 展到現(xiàn)實通信模型的參數(shù)化并發(fā)域。
在此情況下,可表明,對于安全性屬性,(參數(shù)化)模型檢驗問 題不僅可判定,而且對于經(jīng)由成對和異步會合、析取保護(hù)和嵌套鎖定 進(jìn)行交互的PDS有效。假設(shè)已知對經(jīng)由成對會合進(jìn)行交互的兩個(不 同)PDS的模型檢驗問題對于成對可達(dá)性一一對交互式PDS進(jìn)行模型 檢驗的基礎(chǔ)不可判定性結(jié)果是不可判定的,這尤其令人感興趣。這說 明,問題的參數(shù)化版本實際上更易處理。根據(jù)本發(fā)明原理,表明,對 于經(jīng)由廣播、非嵌套鎖定和合取保護(hù)進(jìn)行交互的PDS,參數(shù)化模型檢 驗問題(PMCP)仍不可判定,從而勾畫了所有標(biāo)準(zhǔn)同步原語的安全 性屬性的可判定性邊界。
根據(jù)本公開,提供用于對經(jīng)由配對會合、嵌套鎖定和析取保護(hù)進(jìn) 4亍交互的PDS判定PMCP的經(jīng)i正實有效的方法??杀砻鳎瑢τ诶?廣播、合:f又保護(hù)和非嵌套鎖定的擴大原語(reaming primitive) , PMCP 不可判定。因此,我們?yōu)槊糠N標(biāo)準(zhǔn)的同步原語精確勾畫出k-階(k-wise) 可達(dá)性的PMCP的邊界。
從PDS經(jīng)由成對會合進(jìn)行交互的情形開始。經(jīng)由成對會合進(jìn)行交 互的兩個PDS對于成對可達(dá)性的不可判定性是對交互式PDS進(jìn)行模 型檢驗的不可判定性的基石。經(jīng)證實,經(jīng)由成對會合進(jìn)行交互的PDS 的PMCP不僅可判定,而且可有效判定。這說明,切換到問題的參數(shù) 化版本實際上會使它更易處理。
應(yīng)了解,各圖中示出的單元可用各種形式的硬件、軟件或其組合 實現(xiàn)。優(yōu)選地,這些單元可被存儲在計算機介質(zhì)上,并以軟件形式在 具有處理器和存儲器以及輸入/輸出接口的一個或多個適當(dāng)編程的通
ii用數(shù)字計算機上實現(xiàn)。軟件可包括但不限于固件、常駐軟件、微代碼等。
本發(fā)明的實施例可采用全硬件實施例、全軟件實施例、或包括硬 件和軟件單元的實施例的形式。在一種優(yōu)選實施例中,本發(fā)明以軟件 形式實現(xiàn),軟件包括但不限于固件、常駐軟件、微代碼等。
實施例可采用可從計算機可用或計算機可讀介質(zhì)訪問的計算機 程序產(chǎn)品的形式,該計算機可用或計算機可讀介質(zhì)提供程序代碼以供 計算機或任何指令執(zhí)行系統(tǒng)使用或與其結(jié)合使用。計算機可用或計算 機可讀介質(zhì)可包括存儲、通信、傳播、或傳輸程序以供指令執(zhí)行系統(tǒng)、 裝置或設(shè)備使用或與其結(jié)合使用的任何裝置。該介質(zhì)可以是電、磁、 光、電磁、紅外或半導(dǎo)體系統(tǒng)(或裝置、或設(shè)備)或傳播介質(zhì)。例如, 該介質(zhì)可包括計算機可讀介質(zhì),如半導(dǎo)體或固態(tài)存儲器、磁帶、移動
計算機盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、硬磁 盤和光盤等。
為了使我們的新方法顯得直觀,回想一下,對于U是有限狀態(tài)標(biāo) 示轉(zhuǎn)換系統(tǒng)(沒有棧)的情形,判定參數(shù)化可達(dá)性的問題可通過已知 的簡易定點法來有效解決。從包含U的初始狀態(tài)的集合Ro開始,在 每次迭代時,通過添加新控制狀態(tài)b而從Ri構(gòu)建控制狀態(tài)集合Ri+1,
其中存在定式a—b (aeRi)的內(nèi)部轉(zhuǎn)換,或者存在定式a二b的成對
會合發(fā)送(接收)轉(zhuǎn)換和匹配的接收(發(fā)送)轉(zhuǎn)換cid,其中a和c 都在Ri中。注意,如果控制狀態(tài)的數(shù)量Q有限,則可保證以上過程
在IQI個步驟中終止。
但是,如果模板U是具有無限多種配置的PDS,則不能保證以上 過程奏效。此外,即使它終止了,以上過程也只考慮到由經(jīng)由成對會 合的同步所引起的約束。如果給定模板是PDS,則必須另外確保定點 計算的每個步驟中包含的控制狀態(tài)是上下文無關(guān)可達(dá)的。根據(jù)本發(fā)明 原理,提供考慮這兩種約束的新過程。
現(xiàn)在參照附圖,其中類似數(shù)字標(biāo)號表示相同或類似單元。首先參照圖1,在方框12,給定PDSU,對于包含多個類似組件的并發(fā)程序, 例如運行諸如磁盤驅(qū)動器、音頻揚聲器等硬件的設(shè)備驅(qū)動程序,初始 化可達(dá)控制狀態(tài)集合以確定對于某個n在Un中可達(dá)的U的控制狀態(tài)。 注意,由于棧無邊界,所以可達(dá)配置的數(shù)量可為無窮。PDS可以是設(shè) 備驅(qū)動程序的模型,或是用于表示在其操作期間用于處理并發(fā)線程的 程序或軟件代碼的模型。
將co初始化為U的初始控制狀態(tài),其中co是可達(dá)控制狀態(tài)集合。 執(zhí)行從O到i的初始化,以初始化所有狀態(tài)。從只包含U的初始狀態(tài)
Co的集合R(^c^開始,然后構(gòu)建一系列集合Ro..... Rm,其中Ri+1
是通過添加變得參數(shù)化可達(dá)(例如,對于某個n在Un中可達(dá))的新控 制狀態(tài)而從Ri獲得的,其中假定Ri中的所有狀態(tài)都是參數(shù)化可達(dá)的。 在方框14,基于可達(dá)狀態(tài)集合Ci,去除由于同步構(gòu)造引起的所有約束。 用內(nèi)部轉(zhuǎn)換取代每個約束。從U去除不能轉(zhuǎn)化為內(nèi)部轉(zhuǎn)換的所有同步 轉(zhuǎn)換。
總可滿足由從Ri中的已知已參數(shù)化可達(dá)的控制狀態(tài)所發(fā)出的會
合引起的所有同步約束。這允許將使得存在定式c三d的轉(zhuǎn)換的定式
a二b的所有轉(zhuǎn)換轉(zhuǎn)化為定式a厶b的內(nèi)部轉(zhuǎn)換,其中p和p'是匹配的發(fā) 送和接收會合動作且ceRi 。可定義Ui+1是通過以下方法從U獲得的 模板用內(nèi)部轉(zhuǎn)換取代上述成對會合發(fā)送/接收轉(zhuǎn)換,并去除剩余的會 合發(fā)送和接收轉(zhuǎn)換。
然后,在方框16,為了檢驗是否滿足第二約束、即上下文無關(guān)可 達(dá)性,對模型檢驗PDS使用有效過程。確定(各個)PDS Ui中的可 達(dá)控制狀態(tài)集合R:。如果Rlg《,則定義Rw-《uRi。重復(fù)以上方法, 直到到達(dá)固定點、例如定點計算。定點計算是基于已可達(dá)狀態(tài)發(fā)現(xiàn)新 狀態(tài)直到找不到新狀態(tài)為止的過程。例如,從正被檢驗的系統(tǒng)的初始 狀態(tài)開始。然后,查找哪些狀態(tài)可從初始狀態(tài)達(dá)到,并將它們標(biāo)記為 可達(dá)。接著,檢驗?zāi)男┬聽顟B(tài)可從初始狀態(tài)以及上一步中達(dá)到的狀態(tài) 達(dá)到,依此類推,直到找不到新狀態(tài),然后停止。
13注意,在每次迭代過程中,從前一次迭代添加的上下文無關(guān)可達(dá) (內(nèi)部轉(zhuǎn)換)狀態(tài)越多,則可去除的同步約束就越多,而這又會使更 多狀態(tài)變得上下文無關(guān)可達(dá)。在方框16,將這些新控制狀態(tài)添加到Ci
中,從而產(chǎn)生cw。可通過使用對單個PDS的模型檢驗來查找這些新 狀態(tài)。然后,將i設(shè)為i+l。 PDS可通過例如以下方法來創(chuàng)建取給定 設(shè)備驅(qū)動程序的程序;并去除例如與正在被檢驗的無關(guān)并因此可被丟 棄的賦值語句和條件語句的信息。這稱為抽象解釋。在抽象解釋之后, 將程序縮減成具有有限控制和遞歸,然后可將其轉(zhuǎn)i,為具有有限控制 和棧(用于模型遞歸)的PDS。
在方框17,對關(guān)于是否找到任何新可達(dá)狀態(tài)進(jìn)行檢驗。如果找到 新可達(dá)狀態(tài),則路經(jīng)返回到方框14;在方框14,再次去除同步構(gòu)造, 并用內(nèi)部轉(zhuǎn)換將其取代,程序繼續(xù)。如果未找到新可達(dá)狀態(tài),則路經(jīng) 繼續(xù)到方框18,在方框18, Ci是完整的可達(dá)狀態(tài)集合。
在方框20,基于完整的可達(dá)控制狀態(tài)集合,解決參數(shù)化模型檢驗 問題(PMCP)。這驗證了某些準(zhǔn)則,如計算機系統(tǒng)的其它事實的數(shù) 據(jù)竟?fàn)幾杂伞?br>
因此,在某種意義上,將同步檢驗和上下文無關(guān)可達(dá)性約束相互 吻合,例如以交錯方式執(zhí)行,直到因不能添加新狀態(tài)而到達(dá)固定點為 止。本方法經(jīng)證實是有效的,并且在經(jīng)過o(luf)次后終止,其中IUI是
描述模板的PDS的大小。對于經(jīng)由異步會合、析取保護(hù)和非嵌套鎖定 進(jìn)行交互的PDS的參數(shù)化系列,可給出類似的有效定點法。
另一考慮包括,對于經(jīng)由廣播、合取保護(hù)和非嵌套鎖定進(jìn)行交互 的PDS,該問題一般仍不可判定。本質(zhì)上,之所以這樣是因為,這樣 的參數(shù)化系統(tǒng)可以模仿包括用相同原語進(jìn)行交互的兩個不同PDS的 系統(tǒng),然后其允許采取上下文無關(guān)語言所接受的交集。
系統(tǒng)模型:考慮包括建模為下推系統(tǒng)(PDS )的模板進(jìn)程(線程) U的任意數(shù)量n個副本的1jn形式的并發(fā)程序系列。PDS具有對應(yīng)于 它所表示的線程的變量估值的有限控制部分和對遞歸建模的棧。形式上,PDS是五元組^(P,Act,r,c。,A),其中P是有限的控制位置集合,
Act是有限的動作集合,r是有限的棧字母表,且AG(Pxr)xActx(Pxr) 是有限的轉(zhuǎn)換規(guī)則集合。如果(o,r),fl,(p',w))eA,貝寸(P,r)二(y,w)。 P
的配置是(p, w)對,其中PeP表示控制位置,而we廣表示棧內(nèi)容。 將C。稱為e的初始配置。e的所有配置的集合用C表示。對于每個動
作a,將關(guān)系二^CxC定義如下對于每個ve廣,如果(《,"二(《',w),
貝寸(; ,嚴(yán))4(//,1^)。
用(Uf表示并發(fā)程序系列U2、 U3、...,其中l(wèi)T表示模板U的m 個副本的交錯并行組成。由U[i]表示的U的第i個副本經(jīng)由鎖定、成 對和異步會合、廣播和布爾保護(hù)(合取和析取)等標(biāo)準(zhǔn)同步原語與其 它副本進(jìn)行通信。成對會合是受CCS的啟發(fā),其中利用異步會合和廣 播來對Java 的Wait/Notify和Wait/NotifyAll原語進(jìn)行建模。Un的語 義按照常見方式定義,因此為簡單起見及其省去。
對嵌套和非嵌套鎖定加以區(qū)分。如果沿程序的每次計算,線程只 可釋放它沿該計算獲得并且尚未釋放的上一次鎖定,則并發(fā)程序以嵌 套方式訪問鎖定。
正確性屬性:多線程程序中要檢驗的重要屬性之一是數(shù)據(jù)竟?fàn)幍?缺失。雙重屬性、例如數(shù)據(jù)竟?fàn)幍拇嬖诳杀硎救缦?n:U"|=EF(ClAc2),
其中C!和C2是與正在訪問同一共享變量的程序語句對應(yīng)的U的控制
位置。因此,考慮定式EF(c,,...,ACk)的屬性的PMCP,其中d.....ck
是U的控制位置。形式上,該問題是判定3n:U卞EF(c,A,…,ACk)是否成 立。
成對和異步會合:從考慮經(jīng)由成對會合進(jìn)行交互的PDS的參數(shù)化 系統(tǒng)的安全性屬性的模型檢驗問題開始。與具有甚至兩個PDS的系統(tǒng) 的模型檢驗問題變得不可判定的非參數(shù)化情形不同,經(jīng)證實,對于參 數(shù)化系統(tǒng),模型檢驗問題不僅可判定,而且還可有效判定。
令(in為由建模為經(jīng)由成對會合進(jìn)行同步的PDS的模板進(jìn)程U所定義的參數(shù)化系列。這里,U的動作符號的集合s:包括內(nèi)部轉(zhuǎn)換標(biāo)
簽的集合2^以及發(fā)送和接收成對會合轉(zhuǎn)換的集合、x {!}和、x { }。假
設(shè),同步轉(zhuǎn)換、例如由、><{!}^2^><{ }中的動作所標(biāo)記的那些轉(zhuǎn)換不
會修改執(zhí)行轉(zhuǎn)換的PDS的棧。對于動作leSpr,將用l!和l 標(biāo)記的一對
轉(zhuǎn)換稱為匹配?;叵胍幌?,對于pre2^xWu、x( ),如果在局部狀態(tài)
c中存在lf的進(jìn)程U[j],則在全局配置s中激活Un的進(jìn)程U[i](其
中的)的轉(zhuǎn)換tr" a;b ,使得在A中存在定式tr2: c-d的匹配轉(zhuǎn)換。 為了執(zhí)行該會合,將在一個原子步驟中同步激發(fā)(fire)成對的發(fā)送和 才姿收轉(zhuǎn)換tn和tr2。
判定PMCP的策略如下。首先經(jīng)證實,可將EF(c,/v.,,ACk)的PMCP 縮減為各個控制狀態(tài)的可達(dá)性、例如EFe(其中,c是U的控制狀態(tài)) 的PMCP。然后,給出用于判定各個控制狀態(tài)的可達(dá)性的PMCP的新 有效方法。從以下定義開始。
定義1。(參數(shù)化可達(dá)性)如果對于某個n,由于控制狀態(tài)c (配 置c)中的進(jìn)程而存在ljn的可達(dá)全局配置s,則認(rèn)為模板進(jìn)程U的控 制狀態(tài)c (配置c)是參數(shù)化可達(dá)的。
首先證明,如果U的配置c是參數(shù)化可達(dá)的,則給定/,對于某 個k,存在具有c的至少/個副本的Uk的可達(dá)全局狀態(tài)s。換句話說, 可將U的每個參數(shù)化可達(dá)配置的多重性加大到任何任意大的值。這減 輕了跟蹤U的每個配置的多重性的負(fù)擔(dān)。形式上,證明如下。
命題1 。(無邊界的多重性)。令R為U的所有參數(shù)化可達(dá)配置 的集合,并令R'為R的有限子集。然后,給定/,對于某個m,存在 導(dǎo)致全局狀態(tài)s的IT的有限計算,其中具有R'中的每個配置的至少/ 個副本。
推論1。如果對于每個ie[l..k] , Ci是參數(shù)化可達(dá)的,則 3n:U"|=EF(ClA,...,ACk)。此結(jié)果將EF(c,,..., Ack)的PMCP縮減為EFC的
PMCP,其中c是U的控制狀態(tài)。因此,應(yīng)集中在這個問題上。
16控制狀態(tài)可達(dá)性的PMCP:對于U是有限狀態(tài)標(biāo)示轉(zhuǎn)換系統(tǒng)(無
棧)的情形,判定控制狀態(tài)的參數(shù)化可達(dá)性的問題可通過簡易定點法
來有效解決。從只包含U的初始狀態(tài)的集合Ro開始。在每次迭代中, 通過添加新控制狀態(tài)b而從Ri構(gòu)建控制狀態(tài)集合Ri+1,其中存在定式 a->b (ae《)形式的內(nèi)部轉(zhuǎn)換,或存在定式a-〉b的成對會合發(fā)送 (接收)轉(zhuǎn)換以及匹配的接收(發(fā)送)轉(zhuǎn)換c -> d,其中a和c都在 Ri中。注意,如果控制狀態(tài)的數(shù)量Q有限,則可保證以上過程在IQI 個步驟中終止。
但是,如果模板U是PDS,則不能保證以上過程奏效。實際上, 考慮具有兩個控制狀態(tài)a和b、棧字母表《a,p)和單個內(nèi)部轉(zhuǎn)換tr:
a"-b的簡單模板U。因為系統(tǒng)Un中的每個進(jìn)程U[i]的棧都是從空開 始的,所以可從不執(zhí)行轉(zhuǎn)換tr。因此,即使在對U的控制狀態(tài)執(zhí)行以 上方法同時忽略棧操作時b是可達(dá)的,但b仍不是參數(shù)化可達(dá)的。除 了確保滿足由成對會合施加的同步限制外,還需確保定點計算的每個 步驟中包含在Ri+1中的新控制狀態(tài)可從Ri中的已有可達(dá)狀態(tài)與上下文 無關(guān)地達(dá)到。
參照圖2和圖3,說明性地描繪用于判定參數(shù)化控制狀態(tài)可達(dá)性 的PMCP的方法。考慮如圖2所示的模板進(jìn)程U。假設(shè),需要判定對 于某個nEFd是否成立。從只包含U的初始狀態(tài)co的集合1^={00}開 始。然后,構(gòu)建一系列集合,其中Rw是通過添加變得參數(shù)化可達(dá)的 新控制狀態(tài)而從Ri獲得的,其中假定Rj中的所有狀態(tài)均參數(shù)化可達(dá)。
如上所示,僅僅通過取Ri與控制狀態(tài)b的并集并不能獲得Ri+1 ,
其中還存在定式a—b的內(nèi)部轉(zhuǎn)換,或存在定式a二b和c二d (a、 ce《) 的一對會合發(fā)送和接收。這個步驟只能處理同步限制。另外,假設(shè)Ri 中的所有狀態(tài)都是參數(shù)化可達(dá)的,還需測試所添加的控制狀態(tài)是否上 下文無關(guān)可達(dá)。以相吻合的方式處理這兩種限制。
首先,為了滿足同步限制,將使得存在定式cid的轉(zhuǎn)換的定式a二b的所有轉(zhuǎn)換轉(zhuǎn)化為定式a二b的內(nèi)部轉(zhuǎn)換,其中p和p'是匹配的發(fā) 送和接收會合動作、ceRi,且T是;中新引入的特殊動作符號。這受
到以下事實的啟發(fā)因為c是參數(shù)化可達(dá)的,所以經(jīng)由命題/可確保 如果a變得參數(shù)化可達(dá)(現(xiàn)在或在以后某次迭代中),則對于某個m
通過各自在局部狀態(tài)a和c中的進(jìn)程存在ir的可達(dá)全局狀態(tài)。換句
話說,如果a變得可達(dá),則總是可以激活并執(zhí)行會合轉(zhuǎn)換a二b。因此, 可將它像內(nèi)部轉(zhuǎn)換一樣對待。以此方式,通過溢出(flood) Ri的所有 控制狀態(tài),可去除由源自Ri中的控制狀態(tài)的成對發(fā)送或接收轉(zhuǎn)換所引 起的所有同步約束。這將激活具有始于Ri中的控制狀態(tài)的相匹配發(fā)送 /接收的每個會合轉(zhuǎn)換。因此,可用內(nèi)部轉(zhuǎn)換取代這些轉(zhuǎn)換。受此啟發(fā), 將Ui+1定義為是通過以下方法從Uj獲得的模板用內(nèi)部轉(zhuǎn)換取代如上 所述的適當(dāng)成對會合發(fā)送/接收轉(zhuǎn)換,并去除剩余的會合發(fā)送和接收轉(zhuǎn) 換。
為了^r驗第二約束、例如上下文無關(guān)可達(dá)性,現(xiàn)在可利用對PDS 模型檢驗的任何過程,以便確定各個PDS Ui中可達(dá)的U的那些控制 狀態(tài)的集合R:。這給出Ui中的所有上下文無關(guān)可達(dá)狀態(tài)的集合R:。 如果在上一步中經(jīng)由去除一些同步約束而使新控制狀態(tài)變得可達(dá),則 將它們添加到Rw中;否則,到達(dá)固定點,過程終止。
在此實例中,將Ro初始化為(Co)。這激活了兩個轉(zhuǎn)換c。iq和
Cq:;C8,并且因此可將它們轉(zhuǎn)化為內(nèi)部轉(zhuǎn)換,從而產(chǎn)生如圖3所示的
模板Ui。在第二次迭代中,注意,C5、 C6、 Cs和C9都是模板"的可達(dá) 控制狀態(tài),因此1^= {C0,C5,C6,C8,C9}?,F(xiàn)在,因為Co和C5都在I^中,
所以會合轉(zhuǎn)換q4C2和C。4C7變成被激活,并且可轉(zhuǎn)化為內(nèi)部轉(zhuǎn)換,從
而產(chǎn)生模板U2。在U2中,控制狀態(tài)C2、 C4和C 現(xiàn)在變得可達(dá),并且
因此將其添加到R2中,從而產(chǎn)生R3={c0, c2, c4, c5, c6, c7, c8, c9}。最后, 因為控制狀態(tài)C4和C6 e i 3,所以將會合轉(zhuǎn)換c6 i c3和c4 二 Cl轉(zhuǎn)化為內(nèi)部
18轉(zhuǎn)換,從而產(chǎn)生模板U3。因為d和C3是U3的可達(dá)控制位置,所以這 些控制位置現(xiàn)在包含在R4中,從而到達(dá)固定點而導(dǎo)致方法終止。下文 將在方法A中給出對該方法的描述。
對于由經(jīng)由成對會合進(jìn)行交互的模板PDS U組成的系統(tǒng),控制狀
態(tài)可達(dá)性以及因此的k-階(k-wise)的可達(dá)性的參數(shù)化模型檢驗問題 可在O收r)次中判定,其中Q是U的控制狀態(tài)集合。 方法A:對會合的參數(shù)化控制狀態(tài)可達(dá)性
1. 初始化i二O且Ro-{c。},其中Co是U的初始狀態(tài);
2. 重復(fù);
3. i = i+l;
4. 通過以下方法構(gòu)建PDS Ui:用內(nèi)部轉(zhuǎn)換a二b耳又代使得存在定 式c爻d (其中ceRi.,)的相匹配接收(發(fā)送)轉(zhuǎn)換的定式a二b的模板 U的每個成對發(fā)送(接收)轉(zhuǎn)換,并去除剩余的成對發(fā)送或接收會合
轉(zhuǎn)換;
5. 利用用于對各個PDS模型檢驗的過程來計算Ui的可達(dá)控制位 置的集合R!;
6. 設(shè)置《=《—,uR);
7. 直到i ,g《-,;
8. 返回Ri。
異歩會合:用于判定經(jīng)由比成對會合更具表達(dá)力的異步會合進(jìn)行 交互的PDS的PMCP的方法與方法A非常類似。 一個細(xì)微修改說明 異步會合的略微不同的語義。唯一的差別在于,不管是否存在匹配的
接收c么d,都可執(zhí)行異步發(fā)送轉(zhuǎn)換a三b。另一方面,接收轉(zhuǎn)換需要當(dāng) 前激活匹配的發(fā)送,然后自動同時激發(fā)發(fā)送和接收轉(zhuǎn)換?,F(xiàn)在,對方
法A中的PDS Ui的構(gòu)建做出如下修改用內(nèi)部轉(zhuǎn)換a厶b取代模板U
的定式aib形式的每個成對發(fā)送轉(zhuǎn)換。另一方面,為了用內(nèi)部轉(zhuǎn)換
19a—b取代定式a—b的接收轉(zhuǎn)換,需要測試是否存在定式c—d的匹配發(fā) 送轉(zhuǎn)換,其中ceRw。去除剩余的接收異步會合轉(zhuǎn)換。該方法的時間 復(fù)雜性保持不變。
析取保護(hù):考慮經(jīng)由析取保護(hù)進(jìn)行交互的PDS的PMCP。這里,
U的轉(zhuǎn)換用作為定式V(C,V...VCk)的布爾表達(dá)式的保護(hù)標(biāo)記,其中
c,、 ...Ck是U的控制狀態(tài)。在lf中的模板U的副本U[i]中,將U的 轉(zhuǎn)換a — b重寫為定式a—b的轉(zhuǎn)換。在ir中,如果在局部狀
態(tài)d.....Cn的至少之一中存在U[i]以外的進(jìn)程U[j],則在lf的全局
配置中激活U[i]的此類轉(zhuǎn)換。具有經(jīng)由布爾保護(hù)進(jìn)行通信的進(jìn)程的并 發(fā)系統(tǒng)受到Dijkstra的保護(hù)命令模型的啟發(fā)。Dijkstra的保護(hù)命令模型 在本領(lǐng)域中是已知的??勺C明,經(jīng)由析取保護(hù)進(jìn)行通信的有限狀態(tài)進(jìn) 程的PMCP是可有效判定的。用于判定經(jīng)由析取保護(hù)進(jìn)行交互的PDS 的PMCP的廣義方法與經(jīng)由成對會合進(jìn)行交互的PDS的方法類似, 但技術(shù)細(xì)節(jié)有所不同。如上所述,通過證明無邊界的多重性結(jié)果有效 而開始。
命題2。(無邊界的多重性)。令R為經(jīng)由析取保護(hù)進(jìn)行交互的 PDS U的所有參數(shù)化可達(dá)配置的集合,并令R:為R的有限子集。然后, 給定/,對于某個m,存在導(dǎo)致具有R:中的每個配置的至少/個副本 的全局狀態(tài)s的IT的有限計算。因此,如同經(jīng)由成對會合進(jìn)行交互 的PDS的情形,該問題現(xiàn)在縮減為判定控制狀態(tài)可達(dá)性的PMCP。通 過 一 個簡單實例來說明該過程。
參照圖4和圖5,示出說明性模板進(jìn)程U。假設(shè)希望判定對于某 個n, U"卜EF^是否成立。從只包含U的初始狀態(tài)Co的集合R(r(C(^開
始。然后,構(gòu)建一系列集合Ro.....Rm,其中Rw是通過添加變得參
數(shù)化可達(dá)的新控制狀態(tài)而從Rj所獲得的,其中假定Ri中的所有狀態(tài) 都是參數(shù)化可達(dá)的。
當(dāng)從Ri構(gòu)建Rw時,需要確保只有新控制狀態(tài)在由(i)經(jīng)由析取保護(hù)的同步和(ii)上下文無關(guān)可達(dá)性所施加的約束下是可達(dá)時才將它添
加到Rw中。為此,將定式a一'"b的所有轉(zhuǎn)換轉(zhuǎn)化為定式a二b的內(nèi)部轉(zhuǎn)換,其中對于某個j, Cj^Rj。這受到以下事實的啟發(fā)因為Cj是
參數(shù)化可達(dá)的,所以通過經(jīng)由命題2確保對于某個j在局部狀態(tài)Cj中
存在進(jìn)程,可總是激活轉(zhuǎn)換a — b。然后,如上所述,通過溢出Ri的所有控制狀態(tài),可去除由析取保護(hù)引起的所有同步約束,其中析取保護(hù)具有在Ri中出現(xiàn)的狀態(tài)之一作為析取項(disjunct)。這將激活用這種保護(hù)所標(biāo)記的每個轉(zhuǎn)換,因此可以用內(nèi)部轉(zhuǎn)換取代。受此啟發(fā),令Ui+1是通過以下方法從U獲得的模板用內(nèi)部轉(zhuǎn)換取代如上所述用析取保護(hù)所標(biāo)記的適當(dāng)轉(zhuǎn)換,并去除剩余的用保護(hù)所標(biāo)記的轉(zhuǎn)換。然后,通過利用所述模型檢驗PDS的有效過程,確定(各個)PDS Ui中的可達(dá)控制狀態(tài)的集合Rl。如果R^i ,.,則定義Ri+產(chǎn)《uR:。
在此實例中,將Ro初始化為(coh這激活了轉(zhuǎn)換c。4Cs,因此可將它轉(zhuǎn)化為內(nèi)部轉(zhuǎn)換,從而導(dǎo)致如圖5所示的模板Ui。在第二次迭代
中,注意,C0、 C6和Cs是模板Ui的可達(dá)控制狀態(tài),并且因此R產(chǎn)(Co,C6,
C8}?,F(xiàn)在,因為c。eR,,所以轉(zhuǎn)換c。^C7變得被激活,并且可轉(zhuǎn)化為
內(nèi)部轉(zhuǎn)換,從而產(chǎn)生模板U2。在U2中,控制狀態(tài)C4、 C5和C 現(xiàn)在變
得可達(dá),因此將其添加到R2中,從而產(chǎn)生R3={c0, d, c4, c5, c6, c7, c8}。
因為C^R;,所以將轉(zhuǎn)換C6二A轉(zhuǎn)化為內(nèi)部轉(zhuǎn)換,從而產(chǎn)生模板U3,
由此到達(dá)固定點,并導(dǎo)致方法終止。注意,控制狀態(tài)C!和C2不是參數(shù)
化可達(dá)的。下文給出對方法B的描述。
方法B:析取保護(hù)的參數(shù)化控制狀態(tài)可達(dá)性
1. 初始化i-O且Ro二 {co},其中co是U的初始狀態(tài);
2. 重復(fù);
3. i = i+l;
4. 通過以下方法構(gòu)建PDS Uj:用內(nèi)部轉(zhuǎn)換a二b取代定式a — b的U的每個轉(zhuǎn)換,其中對于某個j, CjERw;并去除剩余的用析取保護(hù)所標(biāo)記的轉(zhuǎn)換;
5. 計算Ui的可達(dá)控制位置的集合R:;
6. 設(shè)置i ,.!uR:;
7. 直到《g《—,;
8. 返回Ri。
方法B返回U的參數(shù)化可達(dá)控制狀態(tài)的集合。復(fù)雜性分析如上所述,整個方法B在0(l2「)中運行。對于由經(jīng)由析取保護(hù)進(jìn)行交互的模板PDS U組成的系統(tǒng),可在O(lef)時間中判定控制狀態(tài)可達(dá)性以及因此的k-階(k-wise)可達(dá)性的參數(shù)化模型檢驗問題,其中Q是U的控制狀態(tài)的集合。
鎖定:考慮經(jīng)由鎖定進(jìn)行交互的PDS的EF(c,A,…,ACk)的PMCP。
該問題對于具有嵌套鎖定的PDS可判定,但對于具有非嵌套鎖定的PDS則不可判定。這表明,盡管考慮具有成對會合的PDS的模型^r驗問題的參數(shù)化版本時其變得可判定,但對于鎖定,情況并非如此。從嵌套鎖定的情形開始。為簡單起見,考慮定式EF(c,A(^)的屬性的PMCP。我們^人為,-于于11>2,如果lj2卜EF(c! ac2),貝寸Un|=EF(ClAc2)。這將判定EF(c,AcJ的PMCP的問題縮減為具有經(jīng)由嵌套鎖定進(jìn)行交互的兩個PDS的系統(tǒng)的標(biāo)準(zhǔn)模型檢驗問題,該問題表明是可有效判定的。我們認(rèn)為,EF(c,,...,acJ的PMCP是可判定的。對于非嵌套鎖定的情形,對于經(jīng)由非嵌套鎖定進(jìn)行交互的PDS, EF(c,C2)的PMCP是不可判定的。
廣播:對于包括經(jīng)由廣播進(jìn)行交互的模板的系統(tǒng)的參數(shù)化系列,判定參數(shù)化控制狀態(tài)可達(dá)性的問題、例如3n:U"卜EFc (其中c是U的控制狀態(tài))是不可判定的。判定經(jīng)由廣播進(jìn)行交互的PDS的參數(shù)化成對可達(dá)性的問題是不可判定的。
合取保護(hù):對于其中PDS經(jīng)由合取保護(hù)進(jìn)行交互的參數(shù)化系統(tǒng),判定參數(shù)化控制可達(dá)性的問題是不可判定的。
本發(fā)明原理包括一種用于對參數(shù)化并發(fā)軟件進(jìn)行過程間數(shù)據(jù)流分析的新方法。有兩個主要優(yōu)點。首先,與假定線程間沒有任何有效通信或使用如加寬的過近似試探法的現(xiàn)有技術(shù)相比,這些系統(tǒng)和方法適用于現(xiàn)實可行且具有表達(dá)力的通信^^型。其次,本發(fā)明的系統(tǒng)和方法比現(xiàn)有技術(shù)更具擴展性和有效性,因為它們將對具有多個線程的程序的分析縮減為各個線程的擴充版本。
此外,本發(fā)明實施例經(jīng)證實是有效且準(zhǔn)確的,例如是健全和完備的。我們將對包括經(jīng)由鎖定進(jìn)行通信的多個線程的并發(fā)程序的過程間數(shù)據(jù)流分析縮減為可靠性問題的多個實例,例如分析程序的給定的狀態(tài)集合是否可從另一個給定狀態(tài)達(dá)到。本質(zhì)上,為了執(zhí)行可達(dá)性,需要測試(l)滿足線程間的同步原語所施加的約束,以及(2)上下文無關(guān)可達(dá)性(由遞歸引起)有效。我們按相吻合(即,交錯)的方式這樣進(jìn)行。
該新驗證方法的價值包括1 )將過程間數(shù)據(jù)流分析擴展到線程間通信的現(xiàn)實可行模型的參數(shù)化并發(fā)域。本發(fā)明實施例對所有的標(biāo)準(zhǔn)Java通信原語建模?,F(xiàn)有技術(shù)只考慮無任何有效通信的模型。2)本發(fā)明的系統(tǒng)和方法比現(xiàn)有技術(shù)快速,其中時間復(fù)雜度是一個線程(一個PDS)的大小的多項式。3)本發(fā)明實施例更具擴展性,即,可潛在地驗證比現(xiàn)有技術(shù)大的程序。這是通過避免構(gòu)建給定程序的全局狀態(tài)空間、從而繞過狀態(tài)爆炸問題來實現(xiàn)的。分析從并發(fā)多線程程序縮減到其各個線程。4)本發(fā)明實施例既健全又完備,從而避免由不太精確的技術(shù)產(chǎn)生的偽造錯誤蹤跡(trace)。從商業(yè)角度看,這很重要,因為現(xiàn)實中的驗證所花費的大多數(shù)資源是用于檢測/避免偽造錯誤蹤跡的。本發(fā)明實施例易于實現(xiàn),并且可以容易地結(jié)合于現(xiàn)有工具流中。
在描述完對安全性模型檢驗參數(shù)化線程的系統(tǒng)和方法的優(yōu)選實施例(它們用于說明而非限制)之后,注意,鑒于以上教導(dǎo),本領(lǐng)域技術(shù)人員可做出修改和改變。因此,將了解,可對所公開的這些特定實施例做出改變,而這些改變在如隨附權(quán)利要求所概述的本發(fā)明的范圍和精神內(nèi)。因此,在用專利法所要求的細(xì)節(jié)和詳情描述完本發(fā)明的各個方面之后,專利證書所要求的和旨在保護(hù)的內(nèi)容如隨附權(quán)利要求所述。
權(quán)利要求
1. 一種用于計算計算機系統(tǒng)的并發(fā)程序中的數(shù)據(jù)流的方法,包括給定并發(fā)程序,初始化(12)可達(dá)控制狀態(tài)集合;基于所述可達(dá)控制狀態(tài)集合,去除(14)所述控制狀態(tài)之間的同步構(gòu)造;用內(nèi)部轉(zhuǎn)換取代(14)所述同步構(gòu)造;添加(16)通過所述同步構(gòu)造的所述去除所揭示的新可達(dá)控制狀態(tài),其中,利用對單線程的模型檢驗來發(fā)現(xiàn)所述新可達(dá)控制狀態(tài);以及通過審查完整的可達(dá)控制狀態(tài)集合來驗證(20)所述多個并發(fā)程序的數(shù)據(jù)競爭自由。
2. 如權(quán)利要求1所述的方法,還包括檢驗(16)所述控制狀態(tài)的 上下文無關(guān)可達(dá)性。
3. 如權(quán)利要求1所述的方法,還包括重復(fù)進(jìn)行(17)直到找不到 新控制狀態(tài)為止。
4. 如權(quán)利要求l所述的方法,其中,基于在所述程序中是否存在 只包含從初始狀態(tài)開始的內(nèi)部轉(zhuǎn)換的路徑而發(fā)現(xiàn)(16)新控制狀態(tài)。
5. 如權(quán)利要求l所述的方法,其中,取代所述同步構(gòu)造包括用 所述內(nèi)部轉(zhuǎn)換取代從已經(jīng)達(dá)到的控制狀態(tài)開始的會合發(fā)送(接收)轉(zhuǎn) 換以及同樣從已經(jīng)達(dá)到的控制狀態(tài)開始的匹配接收(發(fā)送)轉(zhuǎn)換。
6. 如權(quán)利要求l所述的方法,其中,所述系統(tǒng)包括同一下推系統(tǒng) (PDS)的多個副本,并且驗證數(shù)據(jù)竟?fàn)幾杂?20)包括經(jīng)由成對和異步會合、析取保護(hù)和嵌套鎖定進(jìn)行交互以計算單PDS的可達(dá)狀態(tài)。
7. 如權(quán)利要求l所述的方法,其中,所述系統(tǒng)包括多個下推系統(tǒng) (PDS),并且所述PDS經(jīng)由成對會合進(jìn)行交互,其中所述PDS之間的交互對于成對可達(dá)性是可判定的。
8. 如權(quán)利要求1所述的方法,其中,驗證(20 )數(shù)據(jù)竟?fàn)幾杂砂?括-瞼證不同程序的控制狀態(tài)的成對可達(dá)性。
9. 一種用于計算并發(fā)程序中的數(shù)據(jù)流的計算機介質(zhì),包括計算機 可讀程序,其中,所述計算機可讀程序在計算機上執(zhí)行時使所述計算機執(zhí)行以下步驟給定并發(fā)程序,初始化(12)可達(dá)控制狀態(tài)集合; 基于所述可達(dá)控制狀態(tài)集合,去除(14)所述控制狀態(tài)之間的同步構(gòu)造;用內(nèi)部轉(zhuǎn)換取代(14)所述同步構(gòu)造;添加(16)通過所述同步構(gòu)造的所述去除而揭示的新可達(dá)控制狀 態(tài),其中,利用對單線程的模型檢驗來發(fā)現(xiàn)所述新可達(dá)控制狀態(tài);以 及通過審查完整的可達(dá)控制狀態(tài)集合來驗證(20)所述多個并發(fā)程 序的數(shù)據(jù)竟?fàn)幾杂伞?br>
10. —種用于計算計算機系統(tǒng)的計算機程序中的數(shù)據(jù)流的方法, 包括將并發(fā)程序建模(12)為具有多種配置的下推系統(tǒng); 初始化(12)可達(dá)控制狀態(tài)集合; 基于所述可達(dá)控制狀態(tài)集合,去除U4)同步構(gòu)造; 用內(nèi)部轉(zhuǎn)換取代(14 )所述同步構(gòu)造;對所述系統(tǒng)進(jìn)行模型檢驗(16)以確定上下文無關(guān)可達(dá)性,以便 查找單線程的新控制狀態(tài);添加(16)通過所述模型檢驗而揭示的新可達(dá)控制狀態(tài); 重復(fù)進(jìn)行(17),直到找不到新控制狀態(tài)為止;以及 基于完整的可達(dá)控制狀態(tài)集合解決(20)參數(shù)化模型檢驗問題。
11. 如權(quán)利要求IO所述的方法,其中,所述內(nèi)部轉(zhuǎn)換包括控制狀 態(tài)之間的3各徑。
12. 如權(quán)利要求IO所述的方法,其中,所述內(nèi)部轉(zhuǎn)換包括控制狀態(tài)集合中的會合發(fā)送(接收)轉(zhuǎn)換以及匹配接收(發(fā)送)轉(zhuǎn)換。
13. 如權(quán)利要求IO所述的方法,其中,用內(nèi)部轉(zhuǎn)換取代所述同步 構(gòu)造包括去除(14)未轉(zhuǎn)變?yōu)閮?nèi)部轉(zhuǎn)換的所有同步構(gòu)造。
14. 如權(quán)利要求IO所述的方法,所述解決包括對不同程序的控制 狀態(tài)驗證(20 )數(shù)據(jù)竟?fàn)幾杂伞?br>
15. 如權(quán)利要求14所述的方法,其中,所述驗證(20)包括對成 對會合、異步會合、析取保護(hù)和嵌套鎖定確定可判定交互。
16. 如權(quán)利要求IO所述的方法,其中,所述系統(tǒng)包括多個下推系 統(tǒng)(PDS),并且所述PDS經(jīng)由成對會合進(jìn)行交互,其中,所述PDS 之間的交互對于成對可達(dá)性是可判定的。
17. 如權(quán)利要求IO所述的方法,其中,所述系統(tǒng)包括同一下推系 統(tǒng)(PDS)的多個副本,并且解決(20)參數(shù)化模型檢驗問題包括經(jīng) 由成對和異步會合、析取保護(hù)和嵌套鎖定的交互驗證數(shù)據(jù)竟?fàn)幾杂桑?以計算單PDS的可達(dá)狀態(tài)。
18. —種用于計算計算機程序中的數(shù)據(jù)流的計算機介質(zhì),包括計 算機可讀程序,其中,所述計算機可讀程序在計算機上執(zhí)行時使所述 計算機執(zhí)行以下步驟將并發(fā)程序建模(12)為具有多種配置的下推系統(tǒng); 初始化(12)可達(dá)控制狀態(tài)集合; 基于所述可達(dá)控制狀態(tài)集合,去除U4)同步構(gòu)造; 用內(nèi)部轉(zhuǎn)換取代(14)所述同步構(gòu)造;對所述系統(tǒng)進(jìn)行模型檢驗(16)以確定上下文無關(guān)可達(dá)性,以便 查找單線程的新控制狀態(tài);添加(16)通過所述模型檢驗所揭示的新可達(dá)控制狀態(tài); 重復(fù)進(jìn)行U7),直到找不到新控制狀態(tài)為止;以及 基于完整的可達(dá)控制狀態(tài)集合解決(20)參數(shù)化模型檢驗問題。
全文摘要
用于計算計算機系統(tǒng)的并發(fā)程序、例如控制計算機硬件、如磁盤驅(qū)動器、音頻揚聲器等的設(shè)備驅(qū)動程序中的數(shù)據(jù)流的系統(tǒng)和方法,包括給定包括多個類似組件的并發(fā)程序,對于并發(fā)程序之間的交互初始化(12)可達(dá)控制狀態(tài)集合?;谠摽蛇_(dá)控料狀態(tài)集合,去除(14)這些控制狀態(tài)之間的同步構(gòu)造。用內(nèi)部轉(zhuǎn)換取代(14)這些同步構(gòu)造。添加(16)通過同步構(gòu)造的去除所揭示的新可達(dá)控制狀態(tài),其中,使用對單線程的模型檢驗而查找這些新可達(dá)控制狀態(tài)。通過審查完整的可達(dá)控制狀態(tài)集合來驗證(20)上述多個并發(fā)程序的數(shù)據(jù)競爭自由。
文檔編號G06F9/06GK101512481SQ200780032884
公開日2009年8月19日 申請日期2007年10月4日 優(yōu)先權(quán)日2006年10月5日
發(fā)明者V·卡隆 申請人:美國日本電氣實驗室公司