摘 要:本文介紹了一種嵌入式操作系統模塊支持層故障處理方法,擴展了ARINC653標準關于支持分區功能的嵌入式實時操作系統的健康監控機制,在操作系統模塊支持層建立了具備故障處理、日志記錄和自定義故障處理動作等功能的健康監控機制,實現了健康監控對操作系統各個層次的全面覆蓋。
關鍵詞:健康監控;模塊支持層;嵌入式操作系統
一、背景
計算機系統在運行過程中,應用程序和操作系統可能產生各種類型的錯誤和故障,傳統處理方式多為依據對輸入和返回值的判斷等方法在發現錯誤時執行邏輯簡單、動作固定的處理行為,往往無法根據當時的系統狀態和具體的故障細節進行可配置的、有針對性的處理和恢復。據此,ARINC653中提出了對健康監控系統的實現要求:具有分區功能的嵌入式實時操作系統需要健康監控機制提供故障響應、處理、恢復等安全性功能。操作系統不僅要提供給用戶針對某種故障自由選擇處理動作的能力,而且需要支持用戶自定義故障處理動作。[ 1 ]
具有分區功能的嵌入式實時操作系統為分層結構。[ 2 ]為了適應應用環境的需求,操作系統經過不斷發展和演化,形成了由模塊支持層、核心操作系統層、分區操作系統層和應用程序層組成的基本結構。[ 3 ]模塊支持層作為操作系統的基礎,包含硬件驅動程序和基本運行環境,為操作系統屏蔽底層硬件的實現細節和差別,提供統一的接口和運行環境。ARINC653標準規定了傳統的核心操作系統和分區操作系統的健康監控功能,而新層次和組件的相關功能需要自行設計和實現。
二、模塊支持層健康監控
嵌入式操作系統在不同的運行狀態下,不同層次的功能可能發生不同種類的故障,健康監控必須針對故障的類型,根據用戶的設置調用不同的處理方法進行處理和恢復。[ 4 ]傳統的操作系統健康監控機制涵蓋了核心操作系統、分區操作系統和應用程序的各類故障的探測和處理,但并未涉及模塊支持層。[ 5 ]本文提出的模塊支持層故障處理方法,作為傳統操作系統健康監控體系的補充,將健康監控功能延伸至模塊支持層,解決了模塊支持層故障的處理問題。模塊支持層健康監控的主要組成模塊包括:健康監控故障處理、故障日志記錄管理和用戶自定義故障處理動作。
(一)健康監控故障處理
模塊支持層健康監控接管模塊支持層初始化和運行過程中出現的所有故障。它由以下部分組成:
1.故障注入接口
模塊支持層健康監控為模塊支持層軟件提供注入故障的接口,在模塊支持層軟件的錯誤分支,開發者可以使用接口注入指定的故障信息,使模塊支持層健康監控介入并接管故障處理相關事宜。
2.故障默認處理例程
模塊支持層健康監控為模塊支持層軟件提供了默認故障處理例程,主要功能包括輸出和記錄故障相關信息、調用用戶設置的故障處理掛鉤以及在用戶未設置掛鉤時根據操作系統的配置執行模塊重啟、掛起或忽略故障等默認故障恢復操作。
3.故障處理掛鉤
模塊支持層健康監控為用戶提供了介入模塊支持層故障處理過程的函數掛鉤,通過該掛鉤,用戶可以避免在發生模塊支持層故障時執行默認的模塊重啟、掛起或忽略操作,而是利用用戶掛鉤執行用戶希望的操作。模塊支持層故障處理過程通過掛鉤函數參數向用戶傳遞了故障的類型、文本說明等多種相關信息,以幫助用戶判別故障情況,進而執行相應的自定義恢復操作。
4.故障處理流程
模塊支持層健康監控故障處理流程如圖 1所示。
步驟1)注入故障。操作系統模塊支持層軟件運行過程中產生故障時可調用模塊支持層故障注入接口注入相應的故障,參數包括故障代碼和自定義故障消息。
步驟2)故障處理。
模塊支持層注入故障后即轉入故障處理流程:
1)檢查故障代碼和自定義故障消息長度的合法性;
2)如果操作系統健康監控已初始化,則注入操作系統健康監控,由操作系統健康監控接管處理;
3)如果操作系統健康監控未初始化,則生成和組織故障信息;
4)調用模塊支持層默認故障處理動作。
步驟3)模塊支持層默認故障處理動作。
模塊支持層默認故障處理動作的流程包括:
1)檢查故障事件有效性;
2)如果用戶掛接了故障信息的顯示掛鉤,則調用;
3)將故障信息記錄至模塊支持層故障日志記錄;
4)如果用戶掛接了自定義故障處理動作,則調用;
5)如果用戶未定義故障處理動作,則根據操作系統的配置執行以下三種處理之一:a.重啟動操作系統;b.停止處理,進入等待狀態;c.不進行處理,忽略故障。
(二)故障日志記錄管理
模塊支持層健康監控提供了獨立于操作系統健康監控的故障日志管理功能,在故障發生時,能夠自動記錄故障的類型、文本說明等故障相關信息,并提供了故障日志內容獲取、顯示輸出等管理功能,便于用戶根據日志查找故障原因。
1.故障日志記錄
模塊支持層由于其獨立運行的特性,需要獨立的故障日志記錄功能。模塊支持層故障處理提供的日志記錄功能包括記錄日志信息、獲取日志信息、格式化顯示日志信息等。
在故障發生時,模塊支持層故障處理過程會在執行處理動作之前將詳細的故障信息記錄在指定的模塊支持層故障日志記錄位置內。該故障日志采用循環記錄方式,在記錄空間滿后,新的故障信息將覆蓋最舊的故障信息,以確保記錄最近發生的故障。
2.日志記錄管理
模塊支持層故障處理為用戶提供了獲取故障日志和格式化顯示故障日志內容的管理功能及相關接口。用戶能夠通過這些接口按照指定的數量和偏移獲取故障日志,并保存在指定的緩沖區。提取故障日志后,用戶可利用故障信息格式化顯示接口以統一的格式輸出故障的類型、地址、文本說明等詳細信息。
(三)用戶自定義故障處理動作
模塊支持層故障處理為用戶提供了默認故障處理動作,用戶還可以根據自己的需要掛接自定義故障處理動作。如果用戶的應用場景不希望模塊支持層故障處理過程執行重啟模塊、掛起所有操作或忽略錯誤的默認動作,用戶可以自定義故障處理動作,并通過模塊支持層故障處理提供的接口將其掛接至故障處理流程,模塊支持層故障處理將會以用戶的動作替代默認的重啟、掛起和忽略動作。模塊支持層故障處理流程通過用戶掛鉤函數參數為用戶提供了故障的所有詳細信息,包括故障類型、地址、文本說明等,用戶可以根據這些信息實現自定義故障處理邏輯,如:根據故障類型執行相應的恢復方法。
三、總結
在傳統的支持分區的嵌入式操作系統結構中,健康監控完整全面的管理了整個操作系統各個層次的故障處理事務。隨著操作系統的不斷發展和演化,出現了新的結構和層次,健康監控作為操作系統重要的組成部分,也需要進行相應的進化和擴展,以滿足新的系統結構的功能需求。本文介紹的模塊支持層健康監控擴展了傳統操作系統健康監控功能的覆蓋范圍,并使之與傳統健康監控系統有機結合,合作完成故障處理任務,保證了操作系統發展和演化產生的新結構在實際應用中的安全性。
參考文獻:
[1] 劉冬,聶同攀,王承惠.基于ARINC653標準機載電子設備健康監控體系設計[J].航空科學技術,2014.
[2] 李寧波,汪溢,俞慎,葉曉蕓.嵌入式RTOS健康監控技術研究[J].計算機工程,2009.
[3] 仝敏,衛一芃,張燈.嵌入式分區操作系統可靠性技術的研究與應用[J].航空計算技術,2015.
[4] 劉劍慰,姜斌.飛行控制系統健康監控技術研究與系統開發[J].科技通報,2011.
[5] 李偉,萬曉冬.安全嵌入式操作系統的構建與配置[J].電子科技,2010.
基金項目:工信部民用飛機專項科研項目(MJ-S-2012-05)
作者簡介:曹原(1983-),男,陜西西安人,碩士,主要研究方向為嵌入式實時操作系統。