郝繼鋒,虞保忠,郭芳超
(中航工業(yè)西安航空計算技術(shù)研究所第三研究室,陜西 西安 710065)
在綜合化模塊化航空電子系統(tǒng)(IMA系統(tǒng)[1,2])中,一個處理器上運行一個或者多個航電應(yīng)用(例如雷達、導(dǎo)航和通信),為了實現(xiàn)系統(tǒng)高度的容錯能力,需要保證這些航電應(yīng)用之間運行的相對獨立性,基于此種原因,ARINC653標(biāo)準[2,3]中引入分區(qū)管理的概念,目的是為了將運行在處理器上的多個航電應(yīng)用按功能劃分為獨立分區(qū),每個分區(qū)對應(yīng)一個功能獨立的航電應(yīng)用。單核分區(qū)操作系統(tǒng)中,一個分區(qū)由若干個并發(fā)執(zhí)行的任務(wù)組成,分區(qū)內(nèi)的所有任務(wù)共享分區(qū)資源(例如處理器時間、內(nèi)存和其它資源),每一個分區(qū)都有獨立的數(shù)據(jù)和代碼,這樣能夠防止一個分區(qū)的錯誤蔓延到其它分區(qū)。
分區(qū)管理要求分區(qū)之間進行時空隔離,時空隔離技術(shù)已被國外廣泛應(yīng)用于各種飛機中,例如Lockheed Martin F-35軍用聯(lián)合攻擊戰(zhàn)斗機[5]、Boeing 787民用客機[6]和A380民用客機[7]等,時空隔離技術(shù)包括時間隔離與空間隔離兩個技術(shù)[8]。
時間隔離指分區(qū)應(yīng)用任務(wù)之間時間隔離,保證分區(qū)應(yīng)用任務(wù)在用戶靜態(tài)配置的時間點上調(diào)度運行。時間隔離技術(shù)利用操作系統(tǒng)內(nèi)核的時間管理模塊來實現(xiàn)分區(qū)應(yīng)用任務(wù)的時間隔離效果。操作系統(tǒng)內(nèi)核維護一個主幀時間,每個分區(qū)至少分配一個小幀時間。操作系統(tǒng)內(nèi)核根據(jù)小幀時間調(diào)度相應(yīng)的分區(qū),在一個小幀時間內(nèi),按照固定優(yōu)先級的時間片輪轉(zhuǎn)調(diào)度策略調(diào)度應(yīng)用任務(wù)。
空間隔離指分區(qū)與分區(qū)之間的空間隔離保護、分區(qū)與操作系統(tǒng)內(nèi)核之間的空間隔離保護??臻g隔離技術(shù)使用處理器的存儲管理單元(即硬件MMU)使每個任務(wù)處于不同的邏輯空間中,操作系統(tǒng)把每個任務(wù)的邏輯空間映射到不同的物理空間內(nèi),每個任務(wù)的物理空間不會重疊,當(dāng)任務(wù)試圖訪問不屬于自己的空間或具有特權(quán)級的空間時,將會產(chǎn)生異常。
2015年8月21日由美國AEEC機構(gòu)發(fā)布的ARINC653 P1-4標(biāo)準[9]增加了對多核處理器的支持,多核處理器已成為一種行業(yè)的發(fā)展趨勢,同時也促進了航空電子系統(tǒng)的綜合化。恩智浦半導(dǎo)體公司(即NXP公司)設(shè)計了雙核、四核和八核等多個系列(例如T系列、P系列)的嵌入式多核處理器,嵌入式多核處理器的應(yīng)用需要嵌入式多核操作系統(tǒng)的支持,從國外主流商用操作系統(tǒng)供應(yīng)商提供的操作系統(tǒng)產(chǎn)品譜系可以看出,目前嵌入式多核分區(qū)操作系統(tǒng)的應(yīng)用推廣已是大勢所趨。例如,美國Green Hills公司提供的INTEGRITY-178B tuMP[10]多核分區(qū)操作系統(tǒng),該操作系統(tǒng)已在美國Rockwell Collins公司的RQ-7B影子無人飛行系統(tǒng)配套的GPC-3000任務(wù)計算機中搭載使用;再例如,美國Wind River公司提供的VxWorks 653 3.0[11]多核分區(qū)操作系統(tǒng),該操作系統(tǒng)已在法國Airbus公司某民用直升機的統(tǒng)合化模塊化航空電子系統(tǒng)中應(yīng)用和驗證。
目前,國內(nèi)分區(qū)管理技術(shù)的研究和實現(xiàn)大多數(shù)是基于單核分區(qū)操作系統(tǒng),而基于多核分區(qū)操作系統(tǒng)的研究和實現(xiàn)處于空白狀態(tài)。本文基于某多核分區(qū)操作系統(tǒng)(采用多核虛擬機管理器技術(shù)構(gòu)建)設(shè)計并實現(xiàn)了一種多核分區(qū)管理方法,該方法包括3部分功能:分區(qū)配置、分區(qū)初始化和分區(qū)動態(tài)控制。
分區(qū)配置數(shù)據(jù)給分區(qū)提供運行時的輸入數(shù)據(jù),它對分區(qū)基本屬性進行配置,保證了分區(qū)的時間隔離特性、空間隔離特性、功能確定性配置、分區(qū)行為的確定性控制等。
1.1 基本配置數(shù)據(jù)
分區(qū)的基本配置數(shù)據(jù):分區(qū)類型(裸應(yīng)用分區(qū)和客戶OS分區(qū))、分區(qū)名字、分區(qū)pager特權(quán)任務(wù)數(shù)量、分區(qū)ID、分區(qū)大小配置、分區(qū)調(diào)度配置、分區(qū)資源配置、分區(qū)權(quán)能配置、客戶OS綁定處理器核的數(shù)量、分區(qū)親和性配置、分區(qū)I/O管理配置等。
1.2 多核配置數(shù)據(jù)
通常來說,給一個單核模式的客戶OS配置一個虛擬核,該虛擬核在虛擬機管理器內(nèi)有一個對應(yīng)的執(zhí)行線程;而給SMP模式的客戶OS配置二個或者多個虛擬核,這些虛擬核在虛擬機管理器內(nèi)有多個對應(yīng)的執(zhí)行線程,每個執(zhí)行線程在二個或者多個物理核上運行。為了支持SMP模式客戶OS(例如半虛擬化的嵌入式Linux)分區(qū),需要定義如下配置數(shù)據(jù):
(1)虛擬核數(shù)量:需要給SMP模式客戶OS配置二個或者多個虛擬核,如果不指定核映射關(guān)系,則虛擬核會映射到連續(xù)的物理核。
(2)物理核與虛擬核的映射關(guān)系:需要依次配置啟動虛擬核以及物理核與虛擬核的映射關(guān)系。
(3)虛擬核中斷配置:需要把中斷分配給指定的虛擬核,默認情況下,所有中斷都會投遞給0號虛擬核,但是,可以通過重新配置來修改默認配置,把中斷投遞給某個指定的目標(biāo)虛擬核。
2.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計
為了實現(xiàn)多核分區(qū)動態(tài)控制功能,需要對分區(qū)控制塊進行重新設(shè)計,見表1。
表1 分區(qū)控制塊
2.2 分區(qū)初始化過程
當(dāng)虛擬機管理器完成硬件平臺資源(包括CPU、內(nèi)存、時鐘、中斷控制器和其它外設(shè))以及相關(guān)軟件資源的初始化后,開始根據(jù)用戶分區(qū)配置數(shù)據(jù)對分區(qū)進行初始化操作。
在初始化分區(qū)時,為實現(xiàn)分區(qū)多核動態(tài)控制功能,首先,需要給每個分區(qū)(綁定于某個物理核上)創(chuàng)建一個高優(yōu)先級的coreMgr任務(wù)(用于分區(qū)動態(tài)控制功能)、一個二值信號量(初始化為“占用狀態(tài)”)和一個自旋鎖(初始化為“空閑狀態(tài)”)。然后,讀取分區(qū)配置數(shù)據(jù),并把分區(qū)掛到系統(tǒng)的資源管理鏈表上。最后,需要根據(jù)已創(chuàng)建的分區(qū)數(shù)量,為每一個分區(qū)創(chuàng)建一個或者多個pager任務(wù)來接管分區(qū)的管理權(quán)限,把pager任務(wù)加入虛擬機管理器的就緒隊列,等待以pager為載體來啟動分區(qū)。
因為每個分區(qū)初始化時把二值信號量初始化為“占用狀態(tài)”,所以每當(dāng)coreMgr任務(wù)試圖獲取二值信號量時,會導(dǎo)致其進入“睡眠狀態(tài)”,并加入相應(yīng)的睡眠等待隊列,這樣就讓高優(yōu)先級的coreMgr任務(wù)切換到pager任務(wù)運行或者其它任務(wù),讓其它任務(wù)有機會運行。
此外,在初始化每一個分區(qū)的每一個pager任務(wù)時,需要初始化分區(qū)的虛擬核信息,使用pager任務(wù)來實現(xiàn)虛擬核。
整個分區(qū)的初始化過程如圖1所示。
圖1 分區(qū)初始化過程
3.1 分區(qū)控制模型
為了設(shè)計上的簡單性,本文采用基于C/S架構(gòu)的多核分區(qū)控制模型,如圖2所示。
圖2 多核C/S架構(gòu)分區(qū)控制模型
設(shè)計要點:
(1)S端設(shè)計:在S端給每個處理器核上設(shè)計若干個coreMgr任務(wù)對C端發(fā)送的分區(qū)控制命令進行阻塞式讀取和處理;
(2)緩沖區(qū)訪問核間互斥設(shè)計:分區(qū)控制命令管理緩沖區(qū)可能被綁定于多個處理器核上的任務(wù)訪問,因此,設(shè)計自旋鎖對該緩沖區(qū)訪問進行核間互斥保護;
(3)通信過程設(shè)計:利用二值信號量的獲取和釋放來對C端和S端的任務(wù)之間進行同步/通信,并把分區(qū)掛起、分區(qū)恢復(fù)和分區(qū)重啟命令分別保存在命令管理緩沖區(qū)的第0、1、2位。
3.2 分區(qū)掛起過程
當(dāng)主控分區(qū)中的用戶任務(wù)或者虛擬機管理器中的內(nèi)核任務(wù)因為某種原因/故障(例如信息安全組件需求、錯誤處理、異常處理、調(diào)度表切換),需要對目標(biāo)分區(qū)執(zhí)行掛起操作時:
C端通過系統(tǒng)調(diào)用把分區(qū)掛起命令以核間互斥方式寫到命令管理緩沖區(qū)的第0位中,然后,通過調(diào)用釋放二值信號量來喚醒S端目標(biāo)分區(qū)的coreMgr任務(wù),并等待S端分區(qū)掛起操作的返回結(jié)果。
S端的coreMgr任務(wù)以核間互斥方式讀取C端寫入命令管理緩沖區(qū)的第0位的值,解析出具體的分區(qū)掛起命令,并對該命令進行服務(wù),服務(wù)完成后需要清除對應(yīng)的掛起命令,表示已經(jīng)完成分區(qū)掛起服務(wù)。
多核分區(qū)操作系統(tǒng)在用戶分區(qū)內(nèi)創(chuàng)建的所有任務(wù)對虛擬機管理器都可見,因此,掛起分區(qū)操作需要掛起分區(qū)內(nèi)的所有任務(wù)。因為客戶OS分區(qū)和裸應(yīng)用分區(qū)對pager任務(wù)的處理方式不同:客戶OS分區(qū)的pager任務(wù)沒有掛起;而裸應(yīng)用分區(qū)的pager任務(wù)執(zhí)行完后執(zhí)行掛起操作,所以,如果目標(biāo)任務(wù)是pager任務(wù),裸應(yīng)用分區(qū)和客戶OS分區(qū)需要做不同處理,裸應(yīng)用分區(qū)需要跳過pager任務(wù),而客戶OS分區(qū)需要執(zhí)行掛起操作。在掛起了分區(qū)內(nèi)的所有任務(wù)之后,需要把分區(qū)設(shè)置為掛起狀態(tài),此時便完成的S端的主要工作。
當(dāng)考慮在虛擬機管理器之上運行SMP模式的客戶OS時(例如半虛擬化的嵌入式Linux),需要根據(jù)用戶的需求選擇掛起分區(qū)內(nèi)的所有虛擬核、掛起除當(dāng)前調(diào)用核之外的所有其它虛擬核或者只掛起一個指定的目標(biāo)虛擬核。
3.3 分區(qū)恢復(fù)過程
當(dāng)主控分區(qū)中的用戶任務(wù)需要把掛起后的分區(qū)恢復(fù)到原來的狀態(tài)時,必須調(diào)用分區(qū)恢復(fù)系統(tǒng)調(diào)用來完成此服務(wù),分區(qū)恢復(fù)操作時:
C端把分區(qū)恢復(fù)命令以核間互斥方式寫到命令管理緩沖區(qū)的第1位中,然后,通過調(diào)用釋放二值信號量來喚醒S端目標(biāo)分區(qū)的coreMgr任務(wù),并等待S端分區(qū)恢復(fù)服務(wù)的返回結(jié)果。
S端的coreMgr任務(wù)以核間互斥方式讀取C端寫入命令管理緩沖區(qū)第1位的值,解析出具體的分區(qū)恢復(fù)命令,并對該命令進行服務(wù),恢復(fù)服務(wù)完成后即清除對應(yīng)的服務(wù)命令,表示已經(jīng)完成分區(qū)恢復(fù)服務(wù)。
恢復(fù)分區(qū)操作和分區(qū)掛起命令執(zhí)行相反的操作,需要恢復(fù)分區(qū)內(nèi)所有的任務(wù)。因為裸應(yīng)用分區(qū)在執(zhí)行掛起操作時跳過pager任務(wù);而客戶OS分區(qū)執(zhí)行掛起操作,所以,如果目標(biāo)任務(wù)是pager任務(wù),裸應(yīng)用分區(qū)和客戶OS分區(qū)需要做不同處理,裸應(yīng)用分區(qū)需要跳過pager任務(wù),而客戶OS分區(qū)需要執(zhí)行恢復(fù)操作。在恢復(fù)了分區(qū)內(nèi)的所有任務(wù)之后,需要把分區(qū)設(shè)置為恢復(fù)狀態(tài),最后,把分區(qū)設(shè)置為正常狀態(tài)表示分區(qū)恢復(fù)到原始狀態(tài),此時便完成的S端的主要工作。
當(dāng)考慮在虛擬機管理器之上運行SMP模式的客戶OS時(例如半虛擬化的嵌入式Linux),需要根據(jù)用戶的需求選擇恢復(fù)分區(qū)內(nèi)的所有虛擬核、恢復(fù)除當(dāng)前調(diào)用核之外的所有其它虛擬核或者只恢復(fù)一個指定的目標(biāo)虛擬核。
3.4 分區(qū)重啟過程
當(dāng)主控分區(qū)中的用戶任務(wù)或者虛擬機管理器中的內(nèi)核任務(wù)基于某種原因/故障(例如電源中斷、硬件復(fù)位、錯誤處理激活、調(diào)度表切換或者由用戶設(shè)置分區(qū)狀態(tài)),需要對目標(biāo)分區(qū)進行重啟操作時:
C端把分區(qū)重啟命令以核間互斥方式寫到命令管理緩沖區(qū)的第2位中,然后,通過調(diào)用釋放二值信號量來喚醒S端目標(biāo)分區(qū)的coreMgr任務(wù),并等待S端分區(qū)重啟操作的返回結(jié)果。
S端的coreMgr任務(wù)以核間互斥方式讀取C端寫入命令管理緩沖區(qū)的第2位的值,解析出具體的分區(qū)重啟命令,并對該命令進行服務(wù),重啟服務(wù)完成后即清除對應(yīng)的服務(wù)命令,表示已經(jīng)完成分區(qū)重啟服務(wù)。
重啟分區(qū)操作需要掛起并刪除分區(qū)內(nèi)除pager之外所有的普通任務(wù),在禁止MMU的條件下,重新把目標(biāo)分區(qū)映像從加載地址搬到運行地址(物理地址),在分區(qū)映像搬家成功的條件下,把分區(qū)設(shè)置為重啟狀態(tài),然后,重新啟動目標(biāo)分區(qū)的pager任務(wù)(需要設(shè)置pager任務(wù)的PC和MSR,并重新把pager任務(wù)加入就緒隊列),最后,使能MMU,此時便完成的S端的主要工作。
本系統(tǒng)的ELF映像部署如圖3所示。
圖3 ELF映像部署
分區(qū)映像是由一個或者多個應(yīng)用程序映像組成,每個應(yīng)用程序映像作為分區(qū)映像的一個映像段;多個分區(qū)映像組成一個分區(qū)集合映像,每個分區(qū)映像作為分區(qū)集合映像的一個分區(qū)段;分區(qū)集合映像作為虛擬機管理器映像的數(shù)據(jù)段,而配置記錄映像作為虛擬機管理器映像的配置記錄段。
當(dāng)需要把目標(biāo)分區(qū)映像(代碼段、數(shù)據(jù)段和BSS段)從加載地址搬家到運行地址時,首先需要逐一查找目標(biāo)分區(qū)段,找到目標(biāo)分區(qū)段之后,在分區(qū)段內(nèi)又逐一查找映像段,即找到目標(biāo)應(yīng)用程序ELF映像。為了減少映像文件的大小,加速分區(qū)重啟的速度,把ELF格式轉(zhuǎn)換為BIN格式,計算出BIN文件的入口地址后,根據(jù)用戶靜態(tài)配置的目標(biāo)分區(qū)名找到對應(yīng)的目標(biāo)分區(qū)映像名,然后,把代碼段和數(shù)據(jù)段加載到BIN文件入口指定的物理地址空間內(nèi),即可完成S端分區(qū)重啟動的主要工作。
當(dāng)考慮在虛擬機管理器之上運行SMP模式的客戶OS時(例如半虛擬化的嵌入式Linux),需要根據(jù)用戶的需求選擇重啟分區(qū)內(nèi)的所有虛擬核、重啟除當(dāng)前調(diào)用核之外的所有其它虛擬核或者只重啟一個指定的目標(biāo)虛擬核。
3.5 分區(qū)狀態(tài)轉(zhuǎn)換
本文設(shè)計的分區(qū)狀態(tài)轉(zhuǎn)換過程如圖4所示。
圖4 分區(qū)狀態(tài)轉(zhuǎn)換
對分區(qū)定義如下4種狀態(tài):
初始狀態(tài)(INIT):分區(qū)創(chuàng)建時的初始化狀態(tài)。引起分區(qū)進入初始狀態(tài)的原因包括:電源中斷、硬件復(fù)位、錯誤處理激活、調(diào)度表切換。
運行狀態(tài)(RUN):啟動虛擬機管理器所必須的任務(wù)已經(jīng)創(chuàng)建完成,任務(wù)調(diào)度處于激活狀態(tài),處于就緒態(tài)的任務(wù)可以運行,此時分區(qū)處于一個可操作的狀態(tài)。
停機狀態(tài)(HALT):由于某種原因/故障,需要對分區(qū)的任務(wù)資源進行掛起操作,停止分區(qū)內(nèi)的所有任務(wù)的運行狀態(tài)。
空閑狀態(tài)(IDLE):分區(qū)時間窗口里不執(zhí)行任何任務(wù),沒有資源消耗,分配給分區(qū)的時間窗口不會改變。
分區(qū)狀態(tài)可以在一定條件下相互轉(zhuǎn)換:
轉(zhuǎn)換1:用戶級任務(wù)或者虛擬機管理器調(diào)用設(shè)置分區(qū)狀態(tài)服務(wù)并且操作模式設(shè)為空閑狀態(tài)。
轉(zhuǎn)換2:通過執(zhí)行錯誤處理設(shè)置分區(qū)冷啟動恢復(fù)動作或進行調(diào)度表切換將分區(qū)從空閑狀態(tài)切換到初始狀態(tài)。
轉(zhuǎn)換3:當(dāng)分區(qū)已經(jīng)完成初始化,并且調(diào)用設(shè)置分區(qū)狀態(tài)服務(wù),設(shè)定的操作模式是運行狀態(tài)時,分區(qū)就進入運行狀態(tài)工作。
轉(zhuǎn)換4:通過服務(wù)設(shè)置分區(qū)狀態(tài)為初始狀態(tài)、執(zhí)行錯誤處理設(shè)置分區(qū)初始狀態(tài)恢復(fù)動作或調(diào)度表切換時執(zhí)行切換動作(初始狀態(tài))使分區(qū)從運行狀態(tài)轉(zhuǎn)換到初始狀態(tài)。
轉(zhuǎn)換5:用戶級任務(wù)掛起分區(qū)時或者錯誤處理執(zhí)行一個恢復(fù)動作時或者調(diào)度表切換時配置分區(qū)的動作為停機狀態(tài)時,將當(dāng)前正在運行的分區(qū)由運行狀態(tài)轉(zhuǎn)換為停機狀態(tài)。
轉(zhuǎn)換6:用戶級任務(wù)需要由停機狀態(tài)恢復(fù)分區(qū)/準備重啟分區(qū)時或者錯誤處理執(zhí)行一個恢復(fù)動作時或者調(diào)度表切換時配置分區(qū)的動作為空閑時,將當(dāng)前正在運行的分區(qū)由停機狀態(tài)轉(zhuǎn)換為空閑狀態(tài)。
轉(zhuǎn)換7:用戶級任務(wù)完成重啟分區(qū)或者錯誤處理執(zhí)行一個恢復(fù)動作時或者調(diào)度表切換時配置分區(qū)的動作為重啟時,將當(dāng)前正在運行的分區(qū)由空閑狀態(tài)轉(zhuǎn)換為運行狀態(tài)。
4.1 測試環(huán)境
硬件測試環(huán)境包括:1臺PC機和1臺目標(biāo)機通過1臺以太網(wǎng)交換機連接,用于加載待測試程序及調(diào)試控制;1臺目標(biāo)機的串口通過1臺N-port(用于網(wǎng)口和串口之間的轉(zhuǎn)換),經(jīng)以太網(wǎng)交換機連接到PC機,用于查看目標(biāo)機程序的執(zhí)行輸出。
用于測試和驗證的4種目標(biāo)機硬件平臺包括NXP公司PowerPC MPC8641D(含兩個E600核)或者PowerPC P4080(含8個E500MC核)或者PowerPC P2020(含兩個E500V2核)或者PowerPC P2040(含4個E500MC核)。如圖5所示。
圖5 硬件測試環(huán)境
4.2 測試方案
一種多核分區(qū)管理方法在上述4種目標(biāo)機硬件平臺的多核配置模式下進行了充分功能測試和驗證,下面以Po-werPC MPC8641D雙核處理器為例說明測試方案。
給虛擬機管理器配置4個分區(qū),設(shè)置0分區(qū)為主控分區(qū),以固定時間間隔發(fā)出分區(qū)掛起、分區(qū)恢復(fù)和分區(qū)重啟動命令;分區(qū)1和分區(qū)2為裸應(yīng)用分區(qū),分區(qū)3為客戶OS分區(qū),其中,0分區(qū)和2分區(qū)綁定在0核上,1分區(qū)和3分區(qū)綁定在1核上。每個分區(qū)包含基本的pager任務(wù)、異常處理任務(wù)、中斷處理任務(wù),以及其他用戶定制任務(wù)。
4.3 結(jié)果分析
利用串口監(jiān)控工具捕獲的程序輸出結(jié)果如圖6所示。
圖6 測試結(jié)果
從實驗結(jié)果可看出,多核分區(qū)操作系統(tǒng)在啟動過程中為每個分區(qū)創(chuàng)建一個coreMgr任務(wù),coreMgr0任務(wù)綁定在0核上,coreMgr1任務(wù)綁定在1核上,coreMgr2任務(wù)綁定在0核上,coreMgr3任務(wù)綁定在1核上。
分區(qū)0循環(huán)定時給目標(biāo)分區(qū)發(fā)出分區(qū)掛起、分區(qū)恢復(fù)和分區(qū)重啟動命令,當(dāng)掛起分區(qū)1時,分區(qū)1中的所有任務(wù)不再運行,而分區(qū)2、分區(qū)3中的任務(wù)繼續(xù)運行。當(dāng)恢復(fù)分區(qū)1時,分區(qū)1中的所有任務(wù)恢復(fù)運行;當(dāng)重啟支分區(qū)1時,分區(qū)1的映像重新搬家,從分區(qū)1入口重新執(zhí)行,分區(qū)1內(nèi)的所有任務(wù)重新創(chuàng)建并調(diào)度執(zhí)行。
在執(zhí)行完成分區(qū)1的掛起、恢復(fù)和重啟操作之后,繼續(xù)對分區(qū)2和分區(qū)3進行動態(tài)控制,其過程和分區(qū)1動態(tài)控制過程類似。
本文提出一種多核分區(qū)管理方法,包括分區(qū)配置、分區(qū)初始化和分區(qū)動態(tài)控制,并對該設(shè)計方法的正確性進行了功能測試和驗證。該方法具有一定的創(chuàng)新性,是對航空領(lǐng)域滿足ARINC653標(biāo)準的分區(qū)管理方法的擴展。
一種多核分區(qū)管理方法提出了3個創(chuàng)新點:
(1)實現(xiàn)了分區(qū)在核間的動態(tài)控制,即一個物理核上的主控分區(qū)可對其它物理核上的目標(biāo)分區(qū)進行掛起、恢復(fù)和重啟動等動態(tài)控制功能。
(2)設(shè)計了一種基于C/S架構(gòu)的多核分區(qū)動態(tài)控制模型,使用pager任務(wù)來實現(xiàn)虛擬核,可用于對SMP模式的客戶OS進行掛起、恢復(fù)和重啟動控制。
(3)定義了虛擬機管理器的分區(qū)動態(tài)控制的接口標(biāo)準,設(shè)計了相應(yīng)的分區(qū)狀態(tài)轉(zhuǎn)換過程,該接口標(biāo)準是對ARINC653標(biāo)準的擴展。
一種多核分區(qū)管理方法已在某多核分區(qū)操作系統(tǒng)中實現(xiàn),且已進行了充分的功能測試。將來需要進一步完成的測試工作包括:對SMP模式的客戶OS(例如半虛擬化的嵌入式Linux)進行分區(qū)動態(tài)控制功能測試。
[1]Gitsuzo B S Tagawa,Marcelo Lopes de Oliveira,Souza.An overview of the integrated modular avionics (IMA) concept[R].Brazil:INPE,2011:277-280.
[2]Shadrintsev N.Integrated Modular Avionics.Current state and vision of the future development[C]//IMA International Conference.Moscow:GosNIIAS,2012:8-9.
[3]AEEC.Avionics application software standard interface part 4-subset services[S].USA:AEEC,2012:4-5.
[4]AEEC.Avionics application software standard interface,part 5,core software recommended capabilities[S].USA:AEEC,2014:5-7.
[5]Hjortnaes K,Windsor J.System requirements and architecture for time & space partitioning in spacecraft[R].Netherlands:ESA-ESTEC,2010:3-4.
[6]Wikipedia.Integrated modular avionics[EB/OL].[2017-04-11].https://en.wikipedia.org/wiki/Integrated_modular_avionics.
[7]Jean-Bernard.A380 Integrated Modular Avionics[R].France:Airbus,2016:23-41.
[8]Hiller M,Hernek M.Integrated modular avionics:SAVOIR-IMA status and progress[R].European:ESTEC,2012:3-4.
[9]AEEC.Arinc specification 653p1-4 avionics application software standard interface set[S].USA:AEEC,2015:119-120.
[10]John McHale.Rockwell collins selects INTEGRITY-178B tuMP RTOS for shadow UAS mission computer[EB/OL].[2016-08-16].http://mil-embedded.com.
[11]VxWorks 653 3.0 product overview[R].USA:Wind River,2015.