嵌入式雙機容錯實時系統(tǒng)的設計
容錯實時系統(tǒng)的研究主要集中在兩個方面:① 改進實時調度算法,使之確保實時任務在正常運行和遇到錯誤時,均能在規(guī)定時限到來以前獲得正確的輸出。② 將過去應用于普通計算機系統(tǒng)中的冗余容錯策略移植到實時系統(tǒng)中。
本文引用地址:http://butianyuan.cn/article/149685.htm在具有硬件容錯能力的計算機系統(tǒng)中,其失效65%來自軟件,僅有8%來自于硬件。因此,軟件容錯能力成為決定計算機系統(tǒng)可靠性的關鍵。為了在出現硬件或軟件的暫時或永久故障的情況下,保證關鍵任務仍能在規(guī)定的時限范圍內完成運算,并輸出正確的結果,提出一種雙處理器實時嵌入式容錯系統(tǒng)體系結構。該系統(tǒng)結構采用多處理器體系結構,實現計算機之間的通信,并無縫整合了計算機硬件、操作系統(tǒng)、應用軟件級的軟件容錯設計,達到從整體上提高系統(tǒng)可靠性的目的。
1 雙機容錯實時系統(tǒng)的體系結構
本系統(tǒng)采用圖1所示的雙機容錯系統(tǒng)硬件結構模型。該系統(tǒng)在雙機比較系統(tǒng)的基礎上,結合多處理機的松耦合與緊耦合系統(tǒng)結構,在不同的處理機間通過通道互連實現通信,為在硬件容錯中結合軟件容錯提供可能。
圖1 雙機容錯系統(tǒng)結構模型
A機和B機各有獨自的外圍控制邏輯和外設,這樣不會引起系統(tǒng)資源的競爭,增加整體系統(tǒng)的穩(wěn)定性。當然,這樣是以花費更多的硬件設施為代價的。比較器及不一致檢測用專門設計的仲裁檢測電路來實現,其根據A機與B機周期向其發(fā)送的自檢測信號來判斷A機系統(tǒng)和B機系統(tǒng)運行的狀況。
雙機系統(tǒng)的運行狀態(tài)如下:
① 如果A機與B機均正常運行,則將計算機A作為主系統(tǒng),計算機B作為備份使用,A機的運行結果作為系統(tǒng)輸出,A機運行到檢測點,向B機發(fā)送日志,B機更新日志列表。
② 如果A機正常而B機故障,亦將A機的運行結果作為系統(tǒng)輸出,同時將B機的運行故障狀態(tài)報告給A機,并向B機進行復位控制操作。
③ 如果A機故障,B機正常,則進行開關切換操作,B機進行系統(tǒng)備份任務重調度,B機運行結果作為系統(tǒng)輸出,并向A機進行復位控制操作,在檢測點更新A機日志,保持需要備份的任務狀態(tài)一致。
2 軟件設計與實現
圖2所示模型結合嵌入式實時系統(tǒng)的體系結構,采用層次結構和模塊結構相結合,無縫整合了計算機硬件、操作系統(tǒng)、應用軟件級的軟件容錯設計。在整體上采用分層的結構模型,克服了軟、硬件分離和脫節(jié)的問題,提高系統(tǒng)的靈活性和可移植性。模型的每一層均可以看作是一個相對獨立的系統(tǒng)。在每一層中按照系統(tǒng)功能,劃分不同的功能模塊。
圖2 雙機容錯系統(tǒng)軟件體系結構
該系統(tǒng)采用對稱結構,為支持容錯處理,每個節(jié)點從下到上分為3個主要部分,即MCFT(Multiprocessor CommunicatiON for Fault Tolerance)、RTOS系統(tǒng)級容錯組件、任務級動態(tài)冗余組件。
2.1 多機容錯通信模塊MCFT
在操作系統(tǒng)與硬件之間加入MCFT層,MCFT作為BSP(Board Support Package)的一部分,作為硬件平臺的抽象層,為操作系統(tǒng)提供統(tǒng)一的界面,提高系統(tǒng)的可移植性。有容錯需求的任務,通過MCFT所提供的功能傳遞日志,保持主系統(tǒng)和備份系統(tǒng)的關鍵任務的狀態(tài)和數據一致。MCFT屏蔽了底層通信的具體實現細節(jié),使系統(tǒng)的實現與連接介質無關。
MPFT管理著一些數據包,并且在各個節(jié)點之間發(fā)送和接收這些數據包,數據包的結構如下:
2.2 RTOS系統(tǒng)級容錯組件
RTOS系統(tǒng)級容錯組件,包括系統(tǒng)內核級容錯支持組件、系統(tǒng)自診斷組件和主/備用機切換支持組件。
(1) 內核級容錯支持組件
為支持操作系統(tǒng)級和應用級通信,在該系統(tǒng)中,每個節(jié)點上保存兩個對象表,一個本地任務表,一個容錯任務表。本地任務表在每個節(jié)點上都是不同的,它包含在此節(jié)點上創(chuàng)建的所有任務。容錯對象表包含系統(tǒng)中所有的容錯任務,在所有節(jié)點上是一樣的。為保持在所有節(jié)點上容錯任務表的一致性,每個節(jié)點對容錯對象的創(chuàng)建、刪除等都必須通知給備份節(jié)點。利用檢查點技術和傳遞日志法,保持主系統(tǒng)和備份系統(tǒng)的備份任務的狀態(tài)和數據一致。一旦主機發(fā)生故障,系統(tǒng)程序自動進行主/備用機切換,備用機系統(tǒng)使備份任務就緒,利用實時任務的調度策略,使備份任務在備份機上發(fā)生重調度,成為主機。
(2) 系統(tǒng)自診斷組件
如圖3所示,系統(tǒng)中采用自診斷的方法來診斷系統(tǒng)級的故障,用任務級的檢測來診斷應用級的故障。
自診斷劃分為幾個不同的測試階段,系統(tǒng)啟動自檢測階段和周期自檢測階段。自動啟動診斷的因素有:主/備用機定時切換和主機發(fā)生故障。周期自檢測階段根據系統(tǒng)需求,周期性檢測外設和通信口。每個階段對應設備的幾種功能塊,包括CPU的自診斷、中斷響應自診斷、串口自診斷、定時器自診斷、離散量自診斷、RAM自診斷等。
由于結果比較是實時系統(tǒng)中任何事務處理都需要經歷的步驟,因此把任務級的故障檢測放到結果判別部分進行。
(3) 主/備用機切換支持組件
仲裁檢測電路中對主/備用機設置了“看門狗”監(jiān)視器。當主/備用機處于正常工作狀態(tài)時,運行于CPU上的某一任務周期性地對“看門狗”施加復位信號,這樣,“看門狗”計數器就不可能產生溢出觸發(fā)信號;當CPU出現故障時,“看門狗”會輸出一個離散觸發(fā)信號并發(fā)出報警,此時,系統(tǒng)進行自動切換,讓備用的系統(tǒng)機工作。
圖3 主控流程
2.3 任務級動態(tài)冗余
在實時多任務系統(tǒng)中,采用另一種軟件冗余方法——任務級動態(tài)冗余。任務級動態(tài)冗余方法是實時系統(tǒng)中瞬間故障的恢復方法之一。
在實時多任務的環(huán)境下,充分利用操作系統(tǒng)提供的功能,對各個基本任務建立后備任務作為冗余,并對后備任務進行容錯調度,從而起到類似于重試或卷回恢復的作用。利用檢查點技術和傳遞日志法保持主系統(tǒng)和備份系統(tǒng)的狀態(tài)的一致性,實現錯誤恢復,有較高的性價比。
根據應用程序,結合實時性要求,采用以下的措施:
① 把應用程序分解成多個任務,任務以過程的形式出現,各個任務進入運行的順序是從1到n,并在每個任務的最后設置檢查點,傳遞日志。
② 根據應用程序的要求事先給各個任務安排優(yōu)先級,使得任務可以根據要求及時占有處理器,實現實時處理。
③ 為各基本任務準備一個后備任務存放在內存中,平時后備任務不建立,不占有系統(tǒng)資源,僅在需要時才激活使用,后備任務的優(yōu)先級比相應的優(yōu)先級要高。馬上建立就搶占執(zhí)行,是某種意義上的重試或程序卷回。
④ 為實現恢復功能的后備任務,可以和原有任務完全一樣,也可以是替換算法。
下面的算法能為各個任務產生容錯調度,從而實現任務冗余:
當后備任務執(zhí)行了Nmax次之后還通不過檢測,就認為系統(tǒng)出現永久故障,系統(tǒng)報警。Nmax是個閥門值,是由實時要求所決定的。
3 可靠性分析
在考慮了雙機的切換問題(包括切入成功率,與此相關的切入時間和再次切入的時間及其故障判別問題)后,完整的雙機容錯系統(tǒng)的穩(wěn)態(tài)可用度為
其中:λ為平均失效率,β為故障診斷率,是平均診斷時間的倒數;μ為平均維修率,是平均維修時間的倒數;α為加入失效率,是平均切入時間的倒數;C為故障判別率;α′為再次切入失效率,是再次切入時間的倒數(重啟雙工時間的倒數);D為切入成功率。
采用對稱雙機系統(tǒng),在典型值的計算中可以獲得99.99995%的可用度。
4 結論
隨著實時系統(tǒng)在安全領域內越來越多的應用,可靠性已經成為衡量系統(tǒng)優(yōu)劣的重要因素之一。傳統(tǒng)的實時系統(tǒng)容錯只滿足了系統(tǒng)某一方面的容錯需求。為了在出現硬件或軟件的暫時或永久故障的情況下,系統(tǒng)仍能在規(guī)定的時限范圍內完成運算,并輸出正確的結果,本文提出一個軟、硬件結合的完整的解決方案,能滿足系統(tǒng)的強實時性、高可靠性、服務不斷流的要求。此方案應用于RteMS中,具有很高的可靠性。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論