計算機系統的容錯技術(shù)方法
1.3 信息容錯技術(shù)
信息容錯技術(shù)是通過(guò)在數據中附加冗余的信息位來(lái)達到故障檢測和容錯的目的。通常情況下,附加的信息位越多,其檢錯糾錯的能力就越強,但是這同時(shí)也增加了復雜度和難度。信息冗余最常見(jiàn)的有檢錯碼和糾錯碼。檢錯碼只能檢查出錯誤的存在,不能改正錯誤,而糾錯碼能檢查出錯誤并能糾正錯誤。常用的檢錯糾錯碼有奇偶校驗碼、海明碼、循環(huán)碼等。
1.4 軟件容錯技術(shù)
由于硬件系統的故障主要來(lái)自生產(chǎn)和使用階段,因此容錯可以通過(guò)相同部件的重復,即相同資源的累積設置來(lái)實(shí)現;而軟件故障主要來(lái)自說(shuō)明、設計和實(shí)現階段,因此程序的簡(jiǎn)單重復不能實(shí)現容錯,它只能防止硬件損壞或者環(huán)境干擾等引起的物理性故障,而不能防止軟件本身缺陷造成的故障。實(shí)現軟件容錯的基本方法,是將若干個(gè)根據同一需求說(shuō)明編寫(xiě)的不同程序(即多版本程序),在不同空間同時(shí)運行,然后在每一個(gè)設置點(diǎn)通過(guò)表決或接收測試進(jìn)行表決。
最基本的軟件容錯技術(shù)是Algirdas Avizienis提出的基于靜態(tài)冗余的N版本編程方法和B. Randell提出的基于動(dòng)態(tài)冗余的恢復塊技術(shù)。
1.4.1 軟件的相異性設計
對于軟件容錯,考慮的重點(diǎn)是軟件設計的相異性和版本的獨立性。軟件的相異性設計是為了防止由于軟件發(fā)生共性故障而采用的一種設計方法。軟件設計時(shí)的共性越小,出現相同故障的概率也就越小,容錯性能就越強。
相異性設計要求,對于同一需求說(shuō)明的軟件功能,不同的研發(fā)設計人員及不同的研發(fā)設計小組對于這同一功能的軟件設計禁止談?wù)摵蜏贤?,在不同的環(huán)境空間中獨立進(jìn)行設計;另外,還要求軟件設計的多樣性,如采取不同的設計方法、開(kāi)發(fā)工具、編程語(yǔ)言、編譯器、算法等。在航空航天、核電站控制以及鐵路交通的控制等對軟件的可靠性要求很高的場(chǎng)合,軟件的相異性設計可以有效提高軟件的容錯能力和軟件的可靠性,對提高整個(gè)系統的可靠性有很重要的作用。
1.4.2 軟件容錯的基本結構
軟件容錯的基本結構有兩種:
一種是NVP(NVersion Programming)結構(多版本編程設計),這種結構方法是Algirdas Avizienis于1977年在參考文獻[6]中提出的,它是一種靜態(tài)冗余方法,其基本的設計思想是用N個(gè)具有同一功能而采用不同編程方法的程序執行一項運算,其結果通過(guò)多數表決器輸出。NVP系統中的多版本是指根據同一需求說(shuō)明由不同的設計人員或由不同的設計方法、開(kāi)發(fā)工具、編程語(yǔ)言等開(kāi)發(fā)的具有同一功能的軟件版本,即所謂的版本設計的相異性。這種容錯結構方法有效避免了由于軟件共性故障所造成的系統出錯,提高了軟件的可靠性。NNP結構如圖2所示。
圖2 NVP結構
另一種是RB(Recovery Block,恢復快結構),它是Randell于1975年在參考文獻[7]中提出的一種的軟件容錯技術(shù),它是一種動(dòng)態(tài)冗余方法。在RB結構中,有主程序塊和一些備用程序塊構,這里的主程序塊和備用程序塊采用不同編程方法但具有相同的功能。每個(gè)主程序塊都可以用一個(gè)根據同一需求說(shuō)明設計的備用程序塊替換。首先運行主程序塊,然后進(jìn)行接收測試,如果測試通過(guò)則將結果輸出給后續程序,否則調用第一個(gè)備用塊,依次類(lèi)推,在N個(gè)備用程序塊替換完后仍沒(méi)有通過(guò)測試,則要進(jìn)行故障處理。RB結構如圖3所示。
圖3 RB結構
其他的軟件容錯結構都是基于這兩個(gè)基本結構而來(lái)的,例如NVPP(多版本階段程序設計),它要求程序的版本運行分多個(gè)階段進(jìn)行,而且每個(gè)階段運行的程序都包括適當的版本數量。運行一個(gè)階段后,要通過(guò)表決程序來(lái)對這一階段運行的程序進(jìn)行表決,如果得到正確的結果就結束運行,否則繼續下一個(gè)階段版本的運行,直到得出正確的結果。
NVP和RB這兩種基本結構在軟件容錯中用得最廣泛,占據很重要的地位。這里要注意的是,驗證表決程序的可靠性以及表決結果的正確性是個(gè)難點(diǎn),因為如果表決程序本身就是錯誤的,那表決的結果就不可信了,所以要用正確性證明技術(shù)來(lái)保證表決程序的正確。
2 結論
本文詳細介紹了計算機容錯的各種方法,包括硬件容錯、時(shí)間容錯、信息容錯以及軟件容錯等,這些容錯方法在其他工業(yè)場(chǎng)合有廣泛的應用,現在很多工業(yè)系統都是采用基于三模冗余的容錯技術(shù)來(lái)提高系統的可靠性。對于其他要求可靠性高的場(chǎng)合,計算機容錯技術(shù)的方法有著(zhù)良好的應用前景。
評論