Jan. 26 21:45~22:15
系統失效的原因是因為程式的執行引爆了某個fault,導致error,最後形成failure。當例外發生之後,如果希望系統可以持續提供服務,除了修正error狀態,還需要進一步把存在於系統中的fault給排除,否則系統繼續執行下去還是有很高的機會再度引爆同一個fault,結果還是產生failure。
Fault handling就是探討如何排除fault的方法,雖然屬於比較偏向容錯處理的領域,但是在某些特定的狀況之下,例外處理還是可以應用fault handling的技巧來提升系統的強健度。
依據Avizienis等人[1]的分類,fault handling包含以下四個操作:
- 診斷(diagnosis):鑑定與紀錄錯誤發生的原因,包含錯誤發生的位置與種類。
- 隔離(isolation):將失效的元件從系統中隔離,以防止後續的操作繼續使用到這個失效的元件。
- 重新組態(reconfiguration):如果系統有冗餘或是備用的元件,則將系統重新組態以便使用這些冗餘或備用元件。或是重新指派工作,讓沒有發生問題的元件來取代被隔離的元件。
- 重新初始化(reinitialization):確認重新組態之後的系統是可運作的之後,重新設定系統以便採用這個新的組態。
Fault handling的四個操作在日常生活中也經常會套用。例如,鄉民們連續三天使用電腦打報告或是寫程式,最後搞到自己的右手很痛,幾乎無法使用滑鼠(發生failure)。經過醫生或是自己自行檢查之後(診斷),判斷是手腕出了問題,要休息一個禮拜不能使用滑鼠(隔離)。但是公司並不會因此允許你一個禮拜不用上班,你還是要想辦法維持自己處在強健度等級三。因此你嘗試重新調整工作模式,改用左手來使用滑鼠(重新組態)。改變之後發現雖然工作速度變慢了一些,但是至少還可以繼續幫公司賣命。最後你決定重新安排桌面,把滑鼠和滑鼠墊移到左邊,改用左手來操控(重新初始化)。
***
雖然容錯設計的成本比例外處理要高出許多,但了解一些容錯設計的方法,有時候對於例外處理設計還是很有幫助的。
***
友藏內心獨白:不找出內奸,當然會屢戰屢敗啊。
[1] A. Avizienis, J.-C. Laprie, B. Randell, and C. Landwehr, “Basic Concepts and Taxonomy of Dependable and Secure Computing,” IEEE Transactions on Dependable and Secure Computing, vol. 1, no. 1, 2004.
沒有留言:
張貼留言