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