專利名稱:一種具有故障預(yù)測能力的時序?qū)傩员O(jiān)控方法
技術(shù)領(lǐng)域:
本發(fā)明主要涉及到計算機(jī)系統(tǒng)領(lǐng)域,特指一種對軟硬件系統(tǒng)運(yùn)行過程必須滿足的時序?qū)傩赃M(jìn)行監(jiān)控和防范的方法。
背景技術(shù):
隨著計算系統(tǒng)變得越來越復(fù)雜,人們逐漸認(rèn)識到監(jiān)控的重要性,是指對計算過程(例如進(jìn)程)中所關(guān)心的動態(tài)信息進(jìn)行抽取。早期監(jiān)控方法主要基于跟蹤和采樣技術(shù),并用于調(diào)試、優(yōu)化、狀態(tài)報告、重配置等用途;后來人們認(rèn)為傳統(tǒng)監(jiān)控技術(shù)已經(jīng)不適于監(jiān)控具有多處理器、分布式特征的復(fù)雜系統(tǒng),并提出了基于歷史數(shù)據(jù)以及包括數(shù)據(jù)收集、數(shù)據(jù)分析和結(jié)果顯示等步驟的監(jiān)控過程。復(fù)雜系統(tǒng)的運(yùn)行時監(jiān)控在航空航天等安全關(guān)鍵領(lǐng)域非常受重視,因為它是故障檢測、隔離與恢復(fù)(Fault Detection, Isolation and Recovery, FDIR)以及故障診斷(Fault Diagnosis)的基礎(chǔ)。例如,美國航空航天局(NASA)對其深空網(wǎng)絡(luò)(Deep Space Network)建立了監(jiān)控系統(tǒng),由基于信標(biāo)的多任務(wù)異常分析(Beacon-basedException Analysis for Mult1-Missions)系統(tǒng)和空間飛行器健康推理引擎(SpacecraftHealth Inference Engine)兩部分組成,后者基于前者輸出的信息進(jìn)行推斷;歐洲宇航局(ESA)對其關(guān)鍵軟件的FDIR框架和監(jiān)控技術(shù)進(jìn)行了研究,并在Smart-1、Rosetta等多個衛(wèi)星中進(jìn)行試驗。監(jiān)控可以針對系統(tǒng)和軟件中的不同側(cè)面,這與應(yīng)用背景、需求以及用戶的關(guān)注點相關(guān),并已出現(xiàn)許多相關(guān)研究工作。例如,采用不變式或斷言對軟件運(yùn)行過程中的變量值、輸入/輸出或系統(tǒng)狀態(tài)進(jìn)行監(jiān)控;對網(wǎng)絡(luò)中出現(xiàn)的惡意攻擊和非法訪問進(jìn)行監(jiān)控;以形式規(guī)約中提取的事件表達(dá)式作為基礎(chǔ)對系統(tǒng)的實時性進(jìn)行監(jiān)控;基于混成建模對飛行器的健康和性能情況進(jìn)行監(jiān)控;通過軟件運(yùn)行時監(jiān)控技術(shù)對無線網(wǎng)絡(luò)中的能耗進(jìn)行監(jiān)測;在面向服務(wù)的體系結(jié)構(gòu)中,通過軟件封裝技術(shù)對Web服務(wù)的性能進(jìn)行監(jiān)控;等等。為了更準(zhǔn)確地對復(fù)雜時序?qū)傩赃M(jìn)行監(jiān)控,以形式化方法為基礎(chǔ)的運(yùn)行時驗證(Runtime Verification)得到廣泛重視,近年來取得了一定進(jìn)展,已被認(rèn)為是運(yùn)行時監(jiān)控的重要研究領(lǐng)域。運(yùn)行時驗證的目標(biāo)是檢測一個系統(tǒng)的實際運(yùn)行是否違背給定的屬性,該屬性一般用某種時序邏輯(Temporal Logic)公式描述,并以此為基礎(chǔ)生成相應(yīng)的監(jiān)控器。因此,在運(yùn)行時驗證中,監(jiān)控器可以更加具體的定義為“讀取有窮運(yùn)行路徑并給出相應(yīng)結(jié)論的裝置”。線性時序邏輯(Linear Temporal Logic, LTL)作為一種廣泛用于描述反應(yīng)式系統(tǒng)屬性的形式規(guī)約,在運(yùn)行時監(jiān)控中被給予較多關(guān)注和研究。為了增強(qiáng)監(jiān)控屬性對實時等特征的表達(dá)能力,還出現(xiàn)了對PLTL、ITL等時序邏輯乃至混成屬性(Hybrid Property)進(jìn)行運(yùn)行時驗證的研究。多數(shù)情況下,運(yùn)行時驗證中監(jiān)控器的構(gòu)造借助了為時序邏輯公式生成等價自動機(jī)的過程,例如為一個LTL公式構(gòu)造監(jiān)控器可以該公式對應(yīng)的BUchi自動機(jī)為基礎(chǔ)。但由于LTL等時序邏輯的語義是以無窮路徑為基礎(chǔ)的,而運(yùn)行時驗證所得到的軟件運(yùn)行路徑只能是有窮序列,因此往往需要在構(gòu)造監(jiān)控器時把時序邏輯的語義改造為以有窮路徑為基礎(chǔ)。美國NASA定義了有窮序列監(jiān)控邏輯(Monitoring Logic)對程序的預(yù)期行為進(jìn)行規(guī)約,它包含了時序邏輯、實時邏輯、區(qū)間邏輯的主要特征,生成的監(jiān)控器在軟件運(yùn)行時自動判定是否違背預(yù)期行為,并在火星探險漫游者的規(guī)劃軟件PLASMA中應(yīng)用。軟件監(jiān)控根據(jù)其運(yùn)行方式一般分為離線監(jiān)控(Offline Monitoring)和在線監(jiān)控(Online Monitoring)兩種類型。離線監(jiān)控指一個或一組運(yùn)行路徑被記錄下來,然后被傳送給監(jiān)控器進(jìn)行分析和判斷。對于很多資源有限的系統(tǒng),常常采用離線方式。例如,針對空間飛行器的存儲器、帶寬等資源限制,美國NASA研究了如何從傳送回地球的、只記錄軟件部分執(zhí)行信息的日志中有效恢復(fù)整個程序執(zhí)行路徑,以供進(jìn)一步監(jiān)控分析,并在火星探測器中驗證了其有效性。在線監(jiān)控則指監(jiān)控器和目標(biāo)系統(tǒng)并發(fā)執(zhí)行,目標(biāo)系統(tǒng)每步執(zhí)行信息都能被監(jiān)控器獲悉,并及時對系統(tǒng)運(yùn)行情況進(jìn)行判斷。由此可見,在線監(jiān)控是一種遞進(jìn)式(Incremental)、更有效的監(jiān)控方式,能盡快發(fā)現(xiàn)可能存在的問題。但是很明顯,在線監(jiān)控需要占用的更多的資源,有可能影響目標(biāo)系統(tǒng)的性能和效率。在線監(jiān)控又可以進(jìn)一步分為被動在線(Passive Online)監(jiān)控和主動在線(Active Online)監(jiān)控兩類,前者僅對當(dāng)前的執(zhí)行情況進(jìn)行監(jiān)控,而后者與一個激勵產(chǎn)生器之間存在反饋環(huán),可以通過產(chǎn)生某些激勵來預(yù)測以后可能發(fā)生的故障,并調(diào)整系統(tǒng)后續(xù)的運(yùn)行使其回到正確方向。上面提到的運(yùn)行時驗證,其監(jiān)控器由于是一種自動機(jī)的形式,可以記錄當(dāng)前狀態(tài),因此能夠以在線監(jiān)控的方式工作,但依然屬于被動在線監(jiān)控??梢钥吹剑鲃颖O(jiān)控是更加理想的監(jiān)控方式,由于其概念出現(xiàn)還不久,具體的技術(shù)成果仍不多見。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題就在于:針對現(xiàn)有技術(shù)存在的技術(shù)問題,本發(fā)明提供一種原理簡單、適用范圍廣、易實現(xiàn)和推廣、可靠性好的具有故障預(yù)測能力的時序?qū)傩员O(jiān)控方法。為解決上述技術(shù)問題,本發(fā)明采用以下技術(shù)方案:一種具有故障預(yù)測能力的時序?qū)傩员O(jiān)控方法,其步驟為:(I)插裝;在編譯目標(biāo)程序時實現(xiàn),根據(jù)修改的編譯規(guī)則向受控程序中插入代碼,并生成相應(yīng)的信息處理單元;插裝的任務(wù)是基于相應(yīng)的編譯機(jī)制,通過編寫的監(jiān)控腳本自動產(chǎn)生插裝數(shù)據(jù)和事件識別器,并根據(jù)實現(xiàn)系統(tǒng)控制的模型,在代碼實現(xiàn)的適當(dāng)位置自動插入額外的事件執(zhí)行條件代碼,生成相應(yīng)的調(diào)節(jié)器;(2)預(yù)測監(jiān)控器的產(chǎn)生;采用LTL到BUchi自動機(jī)的構(gòu)造方法,生成監(jiān)控器;(3)運(yùn)行時部分模型產(chǎn)生;(4)調(diào)控動作產(chǎn)生;(5)調(diào)控動作的執(zhí)行。作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟(I)的具體執(zhí)行步驟為:1.1、編寫監(jiān)測插裝所需的監(jiān)控腳本,采用PEDL和MEDL語言定義屬性規(guī)約,前者主要描述原子事件和條件是如何由目標(biāo)程序中的方法和變量抽象而成,后者則主要是描述原子事件和條件如何組成復(fù)合事件和條件;1.2、編譯得到一個事件識別器和一個.0ut文件,該文件包含了關(guān)于系統(tǒng)插裝所需要的信息,它以Jtrek工具包可識別的方式被存儲Jtrek是一種開源的基于java字節(jié)碼的比較成熟的插裝工具包;1.3、把模型中的與遷移事件相關(guān)的插裝信息以Jtrek可識別的方式手工定義在另一個.0ut文件中;1.4、插裝組件以受控程序為目標(biāo),以.0ut文件為輸入,完成代碼插裝,調(diào)節(jié)器的生成需要用到事件識別器。所述步驟(2)的具體執(zhí)行步驟為:2.1、針對被監(jiān)控的時序性質(zhì)φ構(gòu)造兩個BUchi自動機(jī)^^和^%2.2、構(gòu)造有窮狀態(tài)機(jī),把上面構(gòu)造的兩個BUchi自動機(jī)轉(zhuǎn)換為兩個確定有窮自動
機(jī)和^4、2.3、將得到的兩個有窮自動機(jī)作笛卡爾乘積,得到有窮狀態(tài)機(jī)= ^ X2.4、將自動機(jī)Iv5最小化,則得到了針對性質(zhì)φ的監(jiān)控器Μφ。所述步驟(3)中給定系統(tǒng)模型G以及與之相對應(yīng)的BUchi自動機(jī)GA,假定S0是Ga的初始狀態(tài),運(yùn)行時部分模型產(chǎn)生的具體過程為:3.1、通過寬度優(yōu)先遍歷,產(chǎn)生N+1步運(yùn)行時部分模型《V3.2、每當(dāng)接收到一個事件e,得到`相應(yīng)的后續(xù)狀態(tài)s' ^ = Λ (S(l,e);3.3、在模型樹( 1中確定從狀態(tài)s'??蛇_(dá)的狀態(tài)集合Γ,3.4、通過在模型G中搜索狀態(tài)集合Γ中每個狀態(tài)的后繼狀態(tài),從而形成新的部分模型Gj1;3.5、當(dāng)運(yùn)行時部分模型產(chǎn)生以后,假定其終結(jié)狀態(tài)為F1,那么返回集合(Ψ(8) |s e FJ。所述步驟(4)中假定是起源于狀態(tài)q的運(yùn)行時部分模型,F(xiàn) = {f1;...,fn}是終止?fàn)顟B(tài)集合,判斷的標(biāo)準(zhǔn)為,對于當(dāng)前的有窮執(zhí)行序列:4.1、如果,對步驟(3)得到的集合中的每一元素Ψ(Α),預(yù)測監(jiān)控器判定結(jié)果均為真,那么不需要產(chǎn)生控制動作,并且如果系統(tǒng)未來Ν+1步執(zhí)行與狀態(tài)序列Ψ (A) —致,則監(jiān)控過程可以安全終止;4.2、如果存在Ψ (fj,預(yù)測監(jiān)控器能夠判定結(jié)果為假,那么狀態(tài)&將被記錄以便基于系統(tǒng)模型產(chǎn)生相應(yīng)的調(diào)控動作;4.3、否則,不做任何操作。所述步驟(5)的具體執(zhí)行步驟為:5.1、在系統(tǒng)執(zhí)行過程中的任意時刻,記錄集合丨(Ψ(").Σ$Ψ( /))丨,采用基于Hash
表的控制執(zhí)行方式;在這種方法中,狀態(tài)序列Ψ (U)的Hash值以及相應(yīng)的調(diào)控動作被存儲起來;5.2、當(dāng)觀察到一個新的狀態(tài),系統(tǒng)遞增的計算新的Hash值,并與Hash表中的項做比較;如果命中某個表項,那么與那個表項關(guān)聯(lián)的調(diào)控動作被使能;同時在觀察到一個后續(xù)新狀態(tài)后,又鈍化被使能的調(diào)控動作。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于:1.本發(fā)明能夠?qū)⑽磥砜赡艿倪\(yùn)行序列與已觀測到的運(yùn)行序列組合起來進(jìn)行監(jiān)控,進(jìn)而能夠提前發(fā)現(xiàn)潛在故障,并采取措施以避免故障的實際發(fā)生,以保證系統(tǒng)正常運(yùn)行。2.本發(fā)明以線性時序邏輯的預(yù)測語義研究為基礎(chǔ),提出一種新的基于自動機(jī)理論的預(yù)測監(jiān)控器構(gòu)造技術(shù)。它可以有效減少最終的預(yù)測監(jiān)控器規(guī)模、控制構(gòu)造過程的復(fù)雜度,同時針對監(jiān)控器的運(yùn)行時開銷進(jìn)行了相應(yīng)的優(yōu)化。3.本發(fā)明從前瞻和調(diào)節(jié)系統(tǒng)行為的需要出發(fā),引入了相應(yīng)的系統(tǒng)模型的概念,定義了模型的驗證語言、控制語言和N步動態(tài)部分模型。4.本發(fā)明是基于前瞻的控制理論,以及相應(yīng)的實現(xiàn)框架,形成一個被監(jiān)控系統(tǒng)運(yùn)行以及監(jiān)控、前瞻、驗證及調(diào)節(jié)構(gòu)成的閉環(huán)回路。
圖1是本發(fā)明的流程示意圖。
具體實施例方式以下將結(jié)合說明書附圖和具體實施例對本發(fā)明做進(jìn)一步詳細(xì)說明。本發(fā)明的具有故障預(yù)測能力的時序?qū)傩员O(jiān)控方法,主要包括兩個階段:(I)靜態(tài)階段,也就是在目標(biāo)程序執(zhí)行之前。在這個階段,根據(jù)屬性規(guī)約和系統(tǒng)模型抽象,自動產(chǎn)生運(yùn)行時驗證器,同時確定被觀測命題、被觀測實體及受控事件、受控實體。(2)運(yùn)行時階段,即在目標(biāo)程序執(zhí)行過程之中。在這個階段中,系統(tǒng)運(yùn)行時信息被收集,同時前瞻未來可能行為并檢查屬性規(guī)約是否被滿足。如果檢測到規(guī)約背離,那么相應(yīng)的調(diào)控動作被自動產(chǎn)生并在適當(dāng)時刻被使能。如圖1所示,本發(fā)明在具體應(yīng)用實例中的詳細(xì)步驟如下。1、插裝;插裝主要在編譯目標(biāo)程序時實現(xiàn),根據(jù)修改的編譯規(guī)則向受控程序中插入代碼,并生成相應(yīng)的信息處理單元。插裝的主要任務(wù)是完成監(jiān)測插裝。基于相應(yīng)的編譯機(jī)制,通過編寫的監(jiān)控腳本自動產(chǎn)生插裝數(shù)據(jù)和事件識別器。監(jiān)控腳本中顯式描述:如何基于系統(tǒng)實現(xiàn)中的被監(jiān)測實體,定義屬性規(guī)約涉及的事件和命題。插裝數(shù)據(jù)被用來在系統(tǒng)實現(xiàn)的特定位置植入相應(yīng)的代碼以便在系統(tǒng)運(yùn)行時提取必要的系統(tǒng)狀態(tài)信息;事件識別器接收獲取的系統(tǒng)狀態(tài)信息,同時產(chǎn)生相應(yīng)的高層事件和命題。監(jiān)測插裝從程序運(yùn)行過程中提取被監(jiān)測實體的底層狀態(tài)信息,并映射到屬性規(guī)約涉及的高層事件。插裝的另一任務(wù)是完成控制插裝。根據(jù)實現(xiàn)系統(tǒng)控制的模型,編譯時在代碼實現(xiàn)的適當(dāng)位置自動插入額外的事件執(zhí)行條件代碼,并生成相應(yīng)的調(diào)節(jié)器。底層信息對應(yīng)可能是類的域、方法或者一般函數(shù)調(diào)用等被監(jiān)測實體,高層受控事件則對應(yīng)系統(tǒng)模型。在系統(tǒng)模型中,對給定系統(tǒng)的有窮執(zhí)行,事件有相應(yīng)的執(zhí)行條件。對應(yīng)于該執(zhí)行條件,插樁動作產(chǎn)生另外的一些插裝數(shù)據(jù),調(diào)節(jié)器則把調(diào)節(jié)動作封裝為相應(yīng)的方法,并為每個方法關(guān)聯(lián)一個標(biāo)記。一旦調(diào)節(jié)器接收到對調(diào)節(jié)動作的調(diào)用,那么它就執(zhí)行相應(yīng)的動作,實現(xiàn)對執(zhí)行條件的控制。
插裝的執(zhí)行步驟是:1.1、編寫監(jiān)測插裝所需的監(jiān)控腳本,采用PEDL和MEDL語言定義屬性規(guī)約,前者主要描述原子事件和條件是如何由目標(biāo)程序中的方法和變量抽象而成,后者則主要是描述原子事件和條件如何組成復(fù)合事件和條件。1.2、編譯得到一個事件識別器和一個.0ut文件,該文件包含了關(guān)于系統(tǒng)插裝所需要的信息,它以Jtrek工具包可識別的方式被存儲。Jtrek是一種開源的基于java字節(jié)碼的比較成熟的插裝工具包。1.3、把模型中的與遷移事件相關(guān)的插裝信息以Jtrek可識別的方式手工定義在另一個.0ut文件中。1.4、插裝組件以受控程序為目標(biāo),以.0ut文件為輸入,完成代碼插裝,調(diào)節(jié)器的生成需要用到事件識別器。2、預(yù)測監(jiān)控器的產(chǎn)生;借鑒經(jīng)典的LTL到BUchi自動機(jī)的構(gòu)造方法,生成監(jiān)控器的主要過程如下:2.1、針對被監(jiān)控的時序性質(zhì)cp構(gòu)造兩個BUchi自動機(jī)Α4ΡΑ1φ。2.2、構(gòu)造有窮狀態(tài)機(jī)。把上面構(gòu)造的兩個BUchi自動機(jī)轉(zhuǎn)換為兩個確定有窮自動機(jī)(簡稱DFA)玉■和I''。 2.3、將得到的兩個有窮自動機(jī)作笛卡爾乘積,得到有窮狀態(tài)機(jī)(簡稱FSM)
jV = /Iv^ X 2.4、將自動機(jī):y最小化,則得到了針對性質(zhì)φ的監(jiān)控器Μφ。3、運(yùn)行時部分模型產(chǎn)生;給定系統(tǒng)模型G以及與之相對應(yīng)的BUchi自動機(jī)Ga。假定S0是Ga的初始狀態(tài)。運(yùn)行時部分模型產(chǎn)生的具體過程為:3.1通過寬度優(yōu)先遍歷,產(chǎn)生N+1步運(yùn)行時部分模型G 。3.2、每當(dāng)接收到一個事件e,得到相應(yīng)的后續(xù)狀態(tài)s' ^ = Λ (S(l,e)。3.3、在模型樹( 1中確定從狀態(tài)s'。可達(dá)的狀態(tài)集合Γ。3.4、通過在模型G中搜索狀態(tài)集合Fr中每個狀態(tài)的后繼狀態(tài),從而形成新的部分
模型Gj 。3.5、當(dāng)運(yùn)行時部分模型產(chǎn)生以后,假定其終結(jié)狀態(tài)為F1,那么返回集合{Ψ(8) |s e F1K該集合中的每個元素都對應(yīng)于模型樹中的一個分支。4、調(diào)控動作產(chǎn)生;首先,考慮如何在必要時產(chǎn)生相應(yīng)的調(diào)控動作以及在什么時候使能和鈍化它們。在監(jiān)控中,調(diào)控動作的動態(tài)產(chǎn)生基于預(yù)測監(jiān)控器的仲裁結(jié)論。而仲裁結(jié)論的產(chǎn)生則不但關(guān)注系統(tǒng)的當(dāng)前執(zhí)行序列而且考慮系統(tǒng)未來的各種可能執(zhí)行。假定&是起源于狀態(tài)q的運(yùn)行時部分模型,F(xiàn)= If1,..., fj是終止?fàn)顟B(tài)集合。判斷的標(biāo)準(zhǔn)為,對于當(dāng)前的有窮執(zhí)行序列:4.1、如果,對步驟3中得到的集合中的每一元素Ψ (fj,預(yù)測監(jiān)控器判定結(jié)果均為真,那么不需要產(chǎn)生控制動作,并且如果系統(tǒng)未來N+1步執(zhí)行與狀態(tài)序列Ψ (A) —致,則監(jiān)控過程可以安全終止。
4.2、如果存在Ψ (fj,預(yù)測監(jiān)控器能夠判定結(jié)果為假,那么狀態(tài)&將被記錄以便基于系統(tǒng)模型產(chǎn)生相應(yīng)的調(diào)控動作。4.3、否則,不做任何操作。然后,根據(jù)預(yù)測監(jiān)控器的仲裁結(jié)論,假定集合#^ = (/;...../!) C F為違背性質(zhì)的終結(jié)狀態(tài)集合,基于集合F'產(chǎn)生調(diào)控動作。假設(shè)對于自動機(jī)中的任意的動作序列U,u和集合F'中的某個狀態(tài)之間存在遷移關(guān)系,已觀察到的有窮狀態(tài)序列π,那么對應(yīng)于狀
態(tài)序列π.ΨΟΟ的調(diào)控動作為Σ='Ψ(υ),為了簡便起見,調(diào)控動作常常也可被記為產(chǎn)生調(diào)控動作的目的是,保證如果從現(xiàn)在開始的未來N步系統(tǒng)執(zhí)行與狀態(tài)序列Ψ (U)相匹配,那么集合Sf"5中的任一事件都不允許發(fā)生。5、調(diào)控動作的執(zhí)行;由于監(jiān)控器和系統(tǒng)之間是異步運(yùn)行的,因此它們對于系統(tǒng)的當(dāng)前狀態(tài)具有不一致的視圖,必須采用特殊的執(zhí)行機(jī)制來幫助系統(tǒng)確定在哪些時刻使能或鈍化哪些特定調(diào)控動作。如上所述,對于任意的Ψ (U)是一條可能的未來N步執(zhí)行片段,即狀態(tài)序列,Σ:;^是相應(yīng)的調(diào)控動作。5.1、在系統(tǒng)執(zhí)行過程中的任意時刻,記錄集合丨(Ψ(η),Σ .Ψ(μ) ) L采用基于Hash
表的控制執(zhí)行方式。在這種方法中,狀態(tài)序列Ψ(ιι)的Hash值以及相應(yīng)的調(diào)控動作被存儲起來。5.2、當(dāng)觀察到一個新的狀態(tài),系統(tǒng)遞增的計算新的Hash值,并與Hash表中的項做比較。如果命中某個表項,那么與那個表項關(guān)聯(lián)的調(diào)控動作被使能。同時在觀察到一個后續(xù)新狀態(tài)后,又鈍化被使能的調(diào)控動作。`從而,當(dāng)被插裝系統(tǒng)執(zhí)行時,相關(guān)代碼把相關(guān)的內(nèi)部狀態(tài)信息發(fā)送給事件識別器,事件識別器計算在當(dāng)前狀態(tài)處為真的命題和事件。從而對應(yīng)于高層模型中的一個狀態(tài),運(yùn)行時部分模型產(chǎn)生器根據(jù)當(dāng)前狀態(tài)產(chǎn)生一個新的N+1步部分模型,預(yù)測監(jiān)控器遍歷部分模型中的每個分支,檢查是否發(fā)生性質(zhì)背離。以上僅是本發(fā)明的優(yōu)選實施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤飾,應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種具有故障預(yù)測能力的時序?qū)傩员O(jiān)控方法,其特征在于,步驟為: (1)插裝;在編譯目標(biāo)程序時實現(xiàn),根據(jù)修改的編譯規(guī)則向受控程序中插入代碼,并生成相應(yīng)的信息處理單元;插裝的任務(wù)是基于相應(yīng)的編譯機(jī)制,通過編寫的監(jiān)控腳本自動產(chǎn)生插裝數(shù)據(jù)和事件識別器,并根據(jù)實現(xiàn)系統(tǒng)控制的模型,在代碼實現(xiàn)的適當(dāng)位置自動插入額外的事件執(zhí)行條件代碼,生成相應(yīng)的調(diào)節(jié)器; (2)預(yù)測監(jiān)控器的產(chǎn)生;采用LTL到BUchi自動機(jī)的構(gòu)造方法,生成監(jiān)控器; (3)運(yùn)行時部分模型產(chǎn)生; (4)調(diào)控動作產(chǎn)生; (5)調(diào)控動作的執(zhí)行。
2.根據(jù)權(quán)利要求1所述的具有故障預(yù)測能力的時序?qū)傩员O(jiān)控方法,其特征在于,所述步驟(I)的具體執(zhí)行步驟為: .1.1、編寫監(jiān)測插裝所需的監(jiān)控腳本,采用PEDL和MEDL語言定義屬性規(guī)約,前者主要描述原子事件和條件是如何由目標(biāo)程序中的方法和變量抽象而成,后者則主要是描述原子事件和條件如何組成復(fù)合事件和條件; . 1.2、編譯得到一個事件識別器和一個.0ut文件,該文件包含了關(guān)于系統(tǒng)插裝所需要的信息,它以Jtrek工具包可識別的方式被存儲Jtrek是一種開源的基于java字節(jié)碼的比較成熟的插裝工具包; . 1.3、把模型中的與遷移事件相關(guān)的插裝信息以Jtrek可識別的方式手工定義在另一個.0ut文件中; .1.4、插裝組件以受控程序為目標(biāo),以.0ut文件為輸入, 完成代碼插裝,調(diào)節(jié)器的生成需要用到事件識別器。
3.根據(jù)權(quán)利要求1所述的具有故障預(yù)測能力的時序?qū)傩员O(jiān)控方法,其特征在于,所述步驟(2)的具體執(zhí)行步驟為: .2.1、針對被監(jiān)控的時序性質(zhì)φ構(gòu)造兩個BUchi自動機(jī)^和八1.2.2、構(gòu)造有窮狀態(tài)機(jī),把上面構(gòu)造的兩個BUchi自動機(jī)轉(zhuǎn)換為兩個確定有窮自動機(jī)和 .2.3、將得到的兩個有窮自動機(jī)作笛卡爾乘積,得到有窮狀態(tài)機(jī);1ν' =.P X .2.4、將自動機(jī):T最小化,則得到了針對性質(zhì)中的監(jiān)控器Μφ
4.根據(jù)權(quán)利要求3所述的具有故障預(yù)測能力的時序?qū)買生監(jiān)倥方法,其特征在于,所述步驟(3)中給定系統(tǒng)模型G以及與之相對應(yīng)的BUchi自動機(jī)Ga,假定S0是Ga的初始狀態(tài),運(yùn)行時部分模型產(chǎn)生的具體過程為: .3.1、通過寬度優(yōu)先遍歷,產(chǎn)生Ν+1步運(yùn)行時部分模3^ .3.2、每當(dāng)接收到一個事件e,得到相應(yīng)的后續(xù)狀態(tài)s' A (s0, e); .3.3、在模型樹中確定從狀態(tài)s'。 可達(dá)的狀態(tài)集合F,; .3.4、通過在模型G中搜索狀態(tài)集合Γ中每個狀態(tài)的后繼狀態(tài),從而形成新的部分模型 C/f;. 3.5、當(dāng)運(yùn)行時部分模型產(chǎn)生以后,假定其終結(jié)狀態(tài)為F1,那么返回集合{Ψ(8) |s e FJ。
5.根據(jù)權(quán)利要求4所述的具有故障預(yù)測能力的時序?qū)傩员O(jiān)控方法,其特征在于,所述步驟(4)中假定( 是起源于狀態(tài)q的運(yùn)行時部分模型,F(xiàn)= If1,…,fj是終止?fàn)顟B(tài)集合,判斷的標(biāo)準(zhǔn)為,對于當(dāng)前的有窮執(zhí)行序列: . 4.1、如果,對步驟(3)得到的集合中的每一元素Ψ(Α),預(yù)測監(jiān)控器判定結(jié)果均為真,那么不需要產(chǎn)生控制動作,并且如果系統(tǒng)未來Ν+1步執(zhí)行與狀態(tài)序列Ψ (A) —致,則監(jiān)控過程可以安全終止;. 4.2、如果存在Ψ (fj,預(yù)測監(jiān)控器能夠判定結(jié)果為假,那么狀態(tài)&將被記錄以便基于系統(tǒng)模型產(chǎn)生相應(yīng)的調(diào)控動作; . 4.3、否則,不做任何操作。
6.根據(jù)權(quán)利要求5所述的具有故障預(yù)測能力的時序?qū)傩员O(jiān)控方法,其特征在于,所述步驟(5)的具體執(zhí)行步驟為: . 5.1、在系統(tǒng)執(zhí)行過程中的任意時刻,記錄集合 (Ψ(Μ),Σ^Ψ(μ))丨,采用基于Hash表的控制執(zhí)行方式;在這種方法中,狀態(tài)序列Ψ (U)的Hash值以及相應(yīng)的調(diào)控動作被存儲起來; . 5.2、當(dāng)觀察到一個新的狀態(tài),系統(tǒng)遞增的計算新的Hash值,并與Hash表中的項做比較;如果命中某個表項,那么與那個表項關(guān)聯(lián)的調(diào)控動作被使能;同時在觀察到一個后續(xù)新狀態(tài)后,又鈍化被使能的調(diào)控動作。
全文摘要
本發(fā)明公開了一種具有故障預(yù)測能力的時序?qū)傩员O(jiān)控方法,其步驟為(1)插裝;在編譯目標(biāo)程序時實現(xiàn),根據(jù)修改的編譯規(guī)則向受控程序中插入代碼,并生成相應(yīng)的信息處理單元;插裝的任務(wù)是基于相應(yīng)的編譯機(jī)制,通過編寫的監(jiān)控腳本自動產(chǎn)生插裝數(shù)據(jù)和事件識別器,并根據(jù)實現(xiàn)系統(tǒng)控制的模型,在代碼實現(xiàn)的適當(dāng)位置自動插入額外的事件執(zhí)行條件代碼,生成相應(yīng)的調(diào)節(jié)器;(2)預(yù)測監(jiān)控器的產(chǎn)生;采用LTL到Büchi自動機(jī)的構(gòu)造方法,生成監(jiān)控器;(3)運(yùn)行時部分模型產(chǎn)生;(4)調(diào)控動作產(chǎn)生;(5)調(diào)控動作的執(zhí)行。本發(fā)明具有原理簡單、適用范圍廣、易實現(xiàn)和推廣、可靠性好等優(yōu)點。
文檔編號G06F11/30GK103186451SQ20131009208
公開日2013年7月3日 申請日期2013年3月21日 優(yōu)先權(quán)日2013年3月21日
發(fā)明者董威, 王戟, 趙常智, 文艷軍, 陳振邦, 陳立前, 劉萬偉 申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)