系統容錯是系統可靠性設計的重要組成部分。
而容錯的主要手段是備援。所謂備援,就是多個朋友多條路,多個選擇,有備無患,雙保險之類的意思。
備援技術主要分為四類:
結構備援、資訊備援、時間備援、備援附加技術。
1、結構備援
最常用的備援技術。按工作方式又可以分為
1)靜态備援
通過表決和比較來屏蔽系統中出現的錯誤。
所謂表決,就是N版本程式,相同的輸入,然後考察大家的計算結果,少數服從多數,選一個正确機率最大的結果。

所謂比較,就是一緻性檢查,将計算結果與預測值比較,據此判斷軟硬體故障。
2)動态備援
多重子產品待機儲備,相繼運作,以維持系統的正常工作。經典的例子是冷(脫機備份)、熱備(聯機備份)。
3)混合備援
動靜結合
2、資訊備援
在實作正常功能所需的資訊之外再添加一些資訊,用來檢測或糾正資訊處理和傳輸過程中産生的錯誤,如糾錯碼,比如海明碼,CRC校驗碼之類
3、時間備援
重複執行同一條指令或程式來發現和糾正差錯,如指令複執、程式卷回。
4、備援附加技術
備援備份程式的存儲及調用,實作錯誤檢測和錯誤恢複的程式,實作容錯軟體所需的固化程式。(也就是備援的支撐技術吧)
軟體備援和硬體備援
以上是備援技術的分類。如果從執行媒體看,又可以分為硬體備援和軟體備援。軟體備援的思想是從硬體備援中引申而來,利用軟體設計的備援和多樣化來達到屏蔽錯誤的影響,提高系統可靠性的目的。
我看,上述4種備援技術中,每一種都既可以用硬體來實作,也可以用軟體來實作。