1. 程式人生 > >軟體容錯設計——軟體工程師需要考慮的問題

軟體容錯設計——軟體工程師需要考慮的問題

 

分散式處理器的有效效能及互動操作性對計算機設計每個部件的影響日漸增強時,軟體容錯問題和硬體容錯同樣不可忽視。對軟體容錯的需求日益廣泛,如伺服器、叢集、磁碟陣列、相連的桌上型電腦和移動裝置、網路交換機和路由器、嵌入式系統的多處理器以及片上嵌入式系統的多內容。

目前很多主流的容錯措施主要集中在硬體上:如何避免故障,如何讓故障迅速恢復到有效狀態,如何讓軟體達到這些目的。

而軟體的容錯卻尚無統一的方法,在嵌入式設計中,有的利用已有的機制預測故障,也有的採取防範性措施或者預先處理潛在問題。

現在一致公認的是如出現故障時,需要採取更強有力的軟體措施。作業系統和應用軟體需要返回原始狀態,而且不丟失關於系統活動、對話及儲存器、暫存器內容的資訊。

Eternal系統公司的產品開發副總裁介紹說,這不僅是降低系統的中斷,或者保證系統的可靠性達到99.999%或99.9999%,而是要使系統在故障發生後能恢復到故障發生時的狀態。

Enea嵌入式技術公司的產品營銷主管Michael Christofferson認為,合適的軟體環境可以在故障發生時,能將系統恢復到處理被中斷時的狀態。

經過多年發展,各種容錯技術層出不窮,其中包括儲存器分割槽、狀態檢查、被動複製和更多先進的完全有效複製。他們在有效性及使用的廣泛程度上千差萬別。

大多數桌上型電腦、主流大型伺服器及很多嵌入式聯網裝置都採用分割槽和儲存器分割的方法來對抗病毒和有危害的小程式,這種方法被廣泛運用,可使系統在發生故障時不會造成嚴重後果,即使不能回到正常操作狀態,也能恢復最起碼的所需操作。

包括實時作業系統(RTOS)在內的很多作業系統都嵌入了狀態檢查機制。這些機制通過映象應用程式及資源和相應的事務狀態資訊來跟蹤應用程式的狀態。

應用程式管理器定期收集快取資料、各種表及正在進行的程序等資訊。如果應用程式出現故障是,可啟動儲存有檢查點資訊的冗餘應用程式。

檢查點對系統的影響取決於其使用的廣度和頻率,可能會顯著增加程式大小,並影響系統性能和響應時間。如果每次應用程式執行時都進行檢查點操作並啟動一個新程序,會導致系統中斷。因此,需要確定這項技術的使用頻率以及何時使用。

Eternal Logic的Ratner稱在企業級計算和按需進行效用計算的產品中,系統設計師們正致力於設計採用檢查點和更復雜的基於複製的系統,在這樣的系統中,每個應用程式都有一個以上與原狀態一致的拷貝。

他們利用系統的內部程序間通訊(IPC)嚮應用程式和活動廣播所有資訊。為了確保應用程式不間斷並保持產生的資訊,每個複製的資訊必須映象應用程式的活動。如果系統出現故障,如果希望系統不中斷或狀態資訊不丟失的話,僅需改變最新的備份即可。

PolyCore軟體公司董事長兼CEO Sven Brehmer認為,在備份和狀態檢查中,有效的IPC都是非常重要的,因為在這樣的系統中應用程式和系統資訊拷備之間的通訊需要使用IPC的資訊傳遞。

但IPC還向所有事務提供通用閘道器或介面,用於與應用程式及當前狀態相互通訊。每個拷貝都採用完全相同的方法接收應用程式的資訊和事務,並作出反應。

Objective Interface系統公司高階副總裁Joseph Jacob說,成本也是一方面因素。在大型企業及網路和網際網路的分佈系統中,這涉及到成本與需要儲存資訊的價值及所發生事務的重要程度的關係。但對大多數應用程度而言,這不僅是經濟問題,也會影響系統性能。在嵌入式系統中,即使很少用這個技術,代價也是不菲的。

軟體故障的可恢復性對自動的按需效用計算是非常重要的,可靠性和正常執行時間甚至超過99.99%或99.999%,從而推動Uxcomm和Eternal等軟體公司和EMC、惠普及Sun等硬體公司將基於複製的架構與各種技術結合起來,實現自我管理和自我監視、自我診斷及自我修復。

QNX軟體公司作業系統開發組主管Sebastian Marineau認為,向分散式計算系統的全面推進具有深遠的影響,無論是大型企業或網路系統,還是僅數平方毫米的片上系統,不僅需要廣泛使用這些技術,而且必須考慮如何改進實時及確定性響應的有效性。

Eternal Logic的Ratner認為現在需要的是與作業系統及硬體平臺無關的軟體可恢復性架構,以及軟體的可升級性。

儘管採用XML/Java代理方法的Uxcomm及基於複製/檢查點的Duration架構的Eternal公司都致力於高階Linux、Unix和Windows伺服器叢集程式,他們都準備升級到更復雜的刀片式伺服器陣列和很多嵌入式聯網產品。

Ratner說我們基本按照市場的導向發展,現在嵌入式產品對這種容錯恢復框架要求最大,伺服器產品也有類似的需求。

Object Management集團(OMG)頒佈的FT Corba標準是一種可升級的通用平臺。它指定了一套介面用於容錯物件和基本複製、保持分佈計算環境中複製一致性的記錄和恢復機制。

儘管UC Santa Barbara和卡內基梅隆等研究所的研究人員已經開發了FT Corba外掛用於分佈製造控制系統的實時應用,OMG仍然需要努力將這些機制推向標準化軌道。在傳統IT領域以外對這種可升級的軟體容錯恢復系統也有需求,OMG的成員正在朝這個方向努力。

據Quadros系統公司的Barrett稱,嵌入式系統的這種框架在很多RTOS的程序間通訊協議間不是自上而下的,而是自下而上的。像採用Element的QNX和Enea及使用PloyMessenger的Polycore已經將這種平臺的實現通用化,可作為通用應用程式程式設計介面(API)框架,適合在多核心和多程序環境下使用。這些也將應用於容錯恢復。

Polycore的Brehmer看法一致,他認為在很多分佈嵌入式系統和多核心設計中,一個性能足夠穩定的IPC資訊傳輸框架可增強軟體故障容錯性。

Barrett稱可成為這樣軟體容錯性的標準是透明程序間開放源協議。TIPC已經成為分散式Linux系統間程序互動的標準機制。Wind River系統還使用該機制作為其VxWorks RTOS和分散式網路的中介軟體IPC機制。

但是Barrett提醒說,目前尚不清楚它能否用於路由器處理器板間或主機板處理器間。我們在將之用於通用軟體容錯恢復框架之前,挑選出該層會出現的問題。