郝繼鋒,虞保忠,郭芳超
(中航工業(yè)西安航空計(jì)算技術(shù)研究所第三研究室,陜西 西安 710065)
在綜合化模塊化航空電子系統(tǒng)(IMA系統(tǒng)[1,2])中,一個(gè)處理器上運(yùn)行一個(gè)或者多個(gè)航電應(yīng)用(例如雷達(dá)、導(dǎo)航和通信),為了實(shí)現(xiàn)系統(tǒng)高度的容錯(cuò)能力,需要保證這些航電應(yīng)用之間運(yùn)行的相對獨(dú)立性,基于此種原因,ARINC653標(biāo)準(zhǔn)[2,3]中引入分區(qū)管理的概念,目的是為了將運(yùn)行在處理器上的多個(gè)航電應(yīng)用按功能劃分為獨(dú)立分區(qū),每個(gè)分區(qū)對應(yīng)一個(gè)功能獨(dú)立的航電應(yīng)用。單核分區(qū)操作系統(tǒng)中,一個(gè)分區(qū)由若干個(gè)并發(fā)執(zhí)行的任務(wù)組成,分區(qū)內(nèi)的所有任務(wù)共享分區(qū)資源(例如處理器時(shí)間、內(nèi)存和其它資源),每一個(gè)分區(qū)都有獨(dú)立的數(shù)據(jù)和代碼,這樣能夠防止一個(gè)分區(qū)的錯(cuò)誤蔓延到其它分區(qū)。
分區(qū)管理要求分區(qū)之間進(jìn)行時(shí)空隔離,時(shí)空隔離技術(shù)已被國外廣泛應(yīng)用于各種飛機(jī)中,例如Lockheed Martin F-35軍用聯(lián)合攻擊戰(zhàn)斗機(jī)[5]、Boeing 787民用客機(jī)[6]和A380民用客機(jī)[7]等,時(shí)空隔離技術(shù)包括時(shí)間隔離與空間隔離兩個(gè)技術(shù)[8]。
時(shí)間隔離指分區(qū)應(yīng)用任務(wù)之間時(shí)間隔離,保證分區(qū)應(yīng)用任務(wù)在用戶靜態(tài)配置的時(shí)間點(diǎn)上調(diào)度運(yùn)行。時(shí)間隔離技術(shù)利用操作系統(tǒng)內(nèi)核的時(shí)間管理模塊來實(shí)現(xiàn)分區(qū)應(yīng)用任務(wù)的時(shí)間隔離效果。操作系統(tǒng)內(nèi)核維護(hù)一個(gè)主幀時(shí)間,每個(gè)分區(qū)至少分配一個(gè)小幀時(shí)間。操作系統(tǒng)內(nèi)核根據(jù)小幀時(shí)間調(diào)度相應(yīng)的分區(qū),在一個(gè)小幀時(shí)間內(nèi),按照固定優(yōu)先級的時(shí)間片輪轉(zhuǎn)調(diào)度策略調(diào)度應(yīng)用任務(wù)。
空間隔離指分區(qū)與分區(qū)之間的空間隔離保護(hù)、分區(qū)與操作系統(tǒng)內(nèi)核之間的空間隔離保護(hù)。空間隔離技術(shù)使用處理器的存儲(chǔ)管理單元(即硬件MMU)使每個(gè)任務(wù)處于不同的邏輯空間中,操作系統(tǒng)把每個(gè)任務(wù)的邏輯空間映射到不同的物理空間內(nèi),每個(gè)任務(wù)的物理空間不會(huì)重疊,當(dāng)任務(wù)試圖訪問不屬于自己的空間或具有特權(quán)級的空間時(shí),將會(huì)產(chǎn)生異常。
2015年8月21日由美國AEEC機(jī)構(gòu)發(fā)布的ARINC653 P1-4標(biāo)準(zhǔn)[9]增加了對多核處理器的支持,多核處理器已成為一種行業(yè)的發(fā)展趨勢,同時(shí)也促進(jìn)了航空電子系統(tǒng)的綜合化。恩智浦半導(dǎo)體公司(即NXP公司)設(shè)計(jì)了雙核、四核和八核等多個(gè)系列(例如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ù)計(jì)算機(jī)中搭載使用;再例如,美國Wind River公司提供的VxWorks 653 3.0[11]多核分區(qū)操作系統(tǒng),該操作系統(tǒng)已在法國Airbus公司某民用直升機(jī)的統(tǒng)合化模塊化航空電子系統(tǒng)中應(yīng)用和驗(yàn)證。
目前,國內(nèi)分區(qū)管理技術(shù)的研究和實(shí)現(xiàn)大多數(shù)是基于單核分區(qū)操作系統(tǒng),而基于多核分區(qū)操作系統(tǒng)的研究和實(shí)現(xiàn)處于空白狀態(tài)。本文基于某多核分區(qū)操作系統(tǒng)(采用多核虛擬機(jī)管理器技術(shù)構(gòu)建)設(shè)計(jì)并實(shí)現(xiàn)了一種多核分區(qū)管理方法,該方法包括3部分功能:分區(qū)配置、分區(qū)初始化和分區(qū)動(dòng)態(tài)控制。
分區(qū)配置數(shù)據(jù)給分區(qū)提供運(yùn)行時(shí)的輸入數(shù)據(jù),它對分區(qū)基本屬性進(jìn)行配置,保證了分區(qū)的時(shí)間隔離特性、空間隔離特性、功能確定性配置、分區(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ù)
通常來說,給一個(gè)單核模式的客戶OS配置一個(gè)虛擬核,該虛擬核在虛擬機(jī)管理器內(nèi)有一個(gè)對應(yīng)的執(zhí)行線程;而給SMP模式的客戶OS配置二個(gè)或者多個(gè)虛擬核,這些虛擬核在虛擬機(jī)管理器內(nèi)有多個(gè)對應(yīng)的執(zhí)行線程,每個(gè)執(zhí)行線程在二個(gè)或者多個(gè)物理核上運(yùn)行。為了支持SMP模式客戶OS(例如半虛擬化的嵌入式Linux)分區(qū),需要定義如下配置數(shù)據(jù):
(1)虛擬核數(shù)量:需要給SMP模式客戶OS配置二個(gè)或者多個(gè)虛擬核,如果不指定核映射關(guān)系,則虛擬核會(huì)映射到連續(xù)的物理核。
(2)物理核與虛擬核的映射關(guān)系:需要依次配置啟動(dòng)虛擬核以及物理核與虛擬核的映射關(guān)系。
(3)虛擬核中斷配置:需要把中斷分配給指定的虛擬核,默認(rèn)情況下,所有中斷都會(huì)投遞給0號(hào)虛擬核,但是,可以通過重新配置來修改默認(rèn)配置,把中斷投遞給某個(gè)指定的目標(biāo)虛擬核。
2.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
為了實(shí)現(xiàn)多核分區(qū)動(dòng)態(tài)控制功能,需要對分區(qū)控制塊進(jìn)行重新設(shè)計(jì),見表1。
表1 分區(qū)控制塊
2.2 分區(qū)初始化過程
當(dāng)虛擬機(jī)管理器完成硬件平臺(tái)資源(包括CPU、內(nèi)存、時(shí)鐘、中斷控制器和其它外設(shè))以及相關(guān)軟件資源的初始化后,開始根據(jù)用戶分區(qū)配置數(shù)據(jù)對分區(qū)進(jìn)行初始化操作。
在初始化分區(qū)時(shí),為實(shí)現(xiàn)分區(qū)多核動(dòng)態(tài)控制功能,首先,需要給每個(gè)分區(qū)(綁定于某個(gè)物理核上)創(chuàng)建一個(gè)高優(yōu)先級的coreMgr任務(wù)(用于分區(qū)動(dòng)態(tài)控制功能)、一個(gè)二值信號(hào)量(初始化為“占用狀態(tài)”)和一個(gè)自旋鎖(初始化為“空閑狀態(tài)”)。然后,讀取分區(qū)配置數(shù)據(jù),并把分區(qū)掛到系統(tǒng)的資源管理鏈表上。最后,需要根據(jù)已創(chuàng)建的分區(qū)數(shù)量,為每一個(gè)分區(qū)創(chuàng)建一個(gè)或者多個(gè)pager任務(wù)來接管分區(qū)的管理權(quán)限,把pager任務(wù)加入虛擬機(jī)管理器的就緒隊(duì)列,等待以pager為載體來啟動(dòng)分區(qū)。
因?yàn)槊總€(gè)分區(qū)初始化時(shí)把二值信號(hào)量初始化為“占用狀態(tài)”,所以每當(dāng)coreMgr任務(wù)試圖獲取二值信號(hào)量時(shí),會(huì)導(dǎo)致其進(jìn)入“睡眠狀態(tài)”,并加入相應(yīng)的睡眠等待隊(duì)列,這樣就讓高優(yōu)先級的coreMgr任務(wù)切換到pager任務(wù)運(yùn)行或者其它任務(wù),讓其它任務(wù)有機(jī)會(huì)運(yùn)行。
此外,在初始化每一個(gè)分區(qū)的每一個(gè)pager任務(wù)時(shí),需要初始化分區(qū)的虛擬核信息,使用pager任務(wù)來實(shí)現(xiàn)虛擬核。
整個(gè)分區(qū)的初始化過程如圖1所示。
圖1 分區(qū)初始化過程
3.1 分區(qū)控制模型
為了設(shè)計(jì)上的簡單性,本文采用基于C/S架構(gòu)的多核分區(qū)控制模型,如圖2所示。
圖2 多核C/S架構(gòu)分區(qū)控制模型
設(shè)計(jì)要點(diǎn):
(1)S端設(shè)計(jì):在S端給每個(gè)處理器核上設(shè)計(jì)若干個(gè)coreMgr任務(wù)對C端發(fā)送的分區(qū)控制命令進(jìn)行阻塞式讀取和處理;
(2)緩沖區(qū)訪問核間互斥設(shè)計(jì):分區(qū)控制命令管理緩沖區(qū)可能被綁定于多個(gè)處理器核上的任務(wù)訪問,因此,設(shè)計(jì)自旋鎖對該緩沖區(qū)訪問進(jìn)行核間互斥保護(hù);
(3)通信過程設(shè)計(jì):利用二值信號(hào)量的獲取和釋放來對C端和S端的任務(wù)之間進(jìn)行同步/通信,并把分區(qū)掛起、分區(qū)恢復(fù)和分區(qū)重啟命令分別保存在命令管理緩沖區(qū)的第0、1、2位。
3.2 分區(qū)掛起過程
當(dāng)主控分區(qū)中的用戶任務(wù)或者虛擬機(jī)管理器中的內(nèi)核任務(wù)因?yàn)槟撤N原因/故障(例如信息安全組件需求、錯(cuò)誤處理、異常處理、調(diào)度表切換),需要對目標(biāo)分區(qū)執(zhí)行掛起操作時(shí):
C端通過系統(tǒng)調(diào)用把分區(qū)掛起命令以核間互斥方式寫到命令管理緩沖區(qū)的第0位中,然后,通過調(diào)用釋放二值信號(hào)量來喚醒S端目標(biāo)分區(qū)的coreMgr任務(wù),并等待S端分區(qū)掛起操作的返回結(jié)果。
S端的coreMgr任務(wù)以核間互斥方式讀取C端寫入命令管理緩沖區(qū)的第0位的值,解析出具體的分區(qū)掛起命令,并對該命令進(jìn)行服務(wù),服務(wù)完成后需要清除對應(yīng)的掛起命令,表示已經(jīng)完成分區(qū)掛起服務(wù)。
多核分區(qū)操作系統(tǒng)在用戶分區(qū)內(nèi)創(chuàng)建的所有任務(wù)對虛擬機(jī)管理器都可見,因此,掛起分區(qū)操作需要掛起分區(qū)內(nèi)的所有任務(wù)。因?yàn)榭蛻鬙S分區(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),此時(shí)便完成的S端的主要工作。
當(dāng)考慮在虛擬機(jī)管理器之上運(yùn)行SMP模式的客戶OS時(shí)(例如半虛擬化的嵌入式Linux),需要根據(jù)用戶的需求選擇掛起分區(qū)內(nèi)的所有虛擬核、掛起除當(dāng)前調(diào)用核之外的所有其它虛擬核或者只掛起一個(gè)指定的目標(biāo)虛擬核。
3.3 分區(qū)恢復(fù)過程
當(dāng)主控分區(qū)中的用戶任務(wù)需要把掛起后的分區(qū)恢復(fù)到原來的狀態(tài)時(shí),必須調(diào)用分區(qū)恢復(fù)系統(tǒng)調(diào)用來完成此服務(wù),分區(qū)恢復(fù)操作時(shí):
C端把分區(qū)恢復(fù)命令以核間互斥方式寫到命令管理緩沖區(qū)的第1位中,然后,通過調(diào)用釋放二值信號(hào)量來喚醒S端目標(biāo)分區(qū)的coreMgr任務(wù),并等待S端分區(qū)恢復(fù)服務(wù)的返回結(jié)果。
S端的coreMgr任務(wù)以核間互斥方式讀取C端寫入命令管理緩沖區(qū)第1位的值,解析出具體的分區(qū)恢復(fù)命令,并對該命令進(jìn)行服務(wù),恢復(fù)服務(wù)完成后即清除對應(yīng)的服務(wù)命令,表示已經(jīng)完成分區(qū)恢復(fù)服務(wù)。
恢復(fù)分區(qū)操作和分區(qū)掛起命令執(zhí)行相反的操作,需要恢復(fù)分區(qū)內(nèi)所有的任務(wù)。因?yàn)槁銘?yīng)用分區(qū)在執(zhí)行掛起操作時(shí)跳過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),此時(shí)便完成的S端的主要工作。
當(dāng)考慮在虛擬機(jī)管理器之上運(yùn)行SMP模式的客戶OS時(shí)(例如半虛擬化的嵌入式Linux),需要根據(jù)用戶的需求選擇恢復(fù)分區(qū)內(nèi)的所有虛擬核、恢復(fù)除當(dāng)前調(diào)用核之外的所有其它虛擬核或者只恢復(fù)一個(gè)指定的目標(biāo)虛擬核。
3.4 分區(qū)重啟過程
當(dāng)主控分區(qū)中的用戶任務(wù)或者虛擬機(jī)管理器中的內(nèi)核任務(wù)基于某種原因/故障(例如電源中斷、硬件復(fù)位、錯(cuò)誤處理激活、調(diào)度表切換或者由用戶設(shè)置分區(qū)狀態(tài)),需要對目標(biāo)分區(qū)進(jìn)行重啟操作時(shí):
C端把分區(qū)重啟命令以核間互斥方式寫到命令管理緩沖區(qū)的第2位中,然后,通過調(diào)用釋放二值信號(hào)量來喚醒S端目標(biāo)分區(qū)的coreMgr任務(wù),并等待S端分區(qū)重啟操作的返回結(jié)果。
S端的coreMgr任務(wù)以核間互斥方式讀取C端寫入命令管理緩沖區(qū)的第2位的值,解析出具體的分區(qū)重啟命令,并對該命令進(jìn)行服務(wù),重啟服務(wù)完成后即清除對應(yīng)的服務(wù)命令,表示已經(jīng)完成分區(qū)重啟服務(wù)。
重啟分區(qū)操作需要掛起并刪除分區(qū)內(nèi)除pager之外所有的普通任務(wù),在禁止MMU的條件下,重新把目標(biāo)分區(qū)映像從加載地址搬到運(yùn)行地址(物理地址),在分區(qū)映像搬家成功的條件下,把分區(qū)設(shè)置為重啟狀態(tài),然后,重新啟動(dòng)目標(biāo)分區(qū)的pager任務(wù)(需要設(shè)置pager任務(wù)的PC和MSR,并重新把pager任務(wù)加入就緒隊(duì)列),最后,使能MMU,此時(shí)便完成的S端的主要工作。
本系統(tǒng)的ELF映像部署如圖3所示。
圖3 ELF映像部署
分區(qū)映像是由一個(gè)或者多個(gè)應(yīng)用程序映像組成,每個(gè)應(yīng)用程序映像作為分區(qū)映像的一個(gè)映像段;多個(gè)分區(qū)映像組成一個(gè)分區(qū)集合映像,每個(gè)分區(qū)映像作為分區(qū)集合映像的一個(gè)分區(qū)段;分區(qū)集合映像作為虛擬機(jī)管理器映像的數(shù)據(jù)段,而配置記錄映像作為虛擬機(jī)管理器映像的配置記錄段。
當(dāng)需要把目標(biāo)分區(qū)映像(代碼段、數(shù)據(jù)段和BSS段)從加載地址搬家到運(yùn)行地址時(shí),首先需要逐一查找目標(biāo)分區(qū)段,找到目標(biāo)分區(qū)段之后,在分區(qū)段內(nèi)又逐一查找映像段,即找到目標(biāo)應(yīng)用程序ELF映像。為了減少映像文件的大小,加速分區(qū)重啟的速度,把ELF格式轉(zhuǎn)換為BIN格式,計(jì)算出BIN文件的入口地址后,根據(jù)用戶靜態(tài)配置的目標(biāo)分區(qū)名找到對應(yīng)的目標(biāo)分區(qū)映像名,然后,把代碼段和數(shù)據(jù)段加載到BIN文件入口指定的物理地址空間內(nèi),即可完成S端分區(qū)重啟動(dòng)的主要工作。
當(dāng)考慮在虛擬機(jī)管理器之上運(yùn)行SMP模式的客戶OS時(shí)(例如半虛擬化的嵌入式Linux),需要根據(jù)用戶的需求選擇重啟分區(qū)內(nèi)的所有虛擬核、重啟除當(dāng)前調(diào)用核之外的所有其它虛擬核或者只重啟一個(gè)指定的目標(biāo)虛擬核。
3.5 分區(qū)狀態(tài)轉(zhuǎn)換
本文設(shè)計(jì)的分區(qū)狀態(tài)轉(zhuǎn)換過程如圖4所示。
圖4 分區(qū)狀態(tài)轉(zhuǎn)換
對分區(qū)定義如下4種狀態(tài):
初始狀態(tài)(INIT):分區(qū)創(chuàng)建時(shí)的初始化狀態(tài)。引起分區(qū)進(jìn)入初始狀態(tài)的原因包括:電源中斷、硬件復(fù)位、錯(cuò)誤處理激活、調(diào)度表切換。
運(yùn)行狀態(tài)(RUN):啟動(dòng)虛擬機(jī)管理器所必須的任務(wù)已經(jīng)創(chuàng)建完成,任務(wù)調(diào)度處于激活狀態(tài),處于就緒態(tài)的任務(wù)可以運(yùn)行,此時(shí)分區(qū)處于一個(gè)可操作的狀態(tài)。
停機(jī)狀態(tài)(HALT):由于某種原因/故障,需要對分區(qū)的任務(wù)資源進(jìn)行掛起操作,停止分區(qū)內(nèi)的所有任務(wù)的運(yùn)行狀態(tài)。
空閑狀態(tài)(IDLE):分區(qū)時(shí)間窗口里不執(zhí)行任何任務(wù),沒有資源消耗,分配給分區(qū)的時(shí)間窗口不會(huì)改變。
分區(qū)狀態(tài)可以在一定條件下相互轉(zhuǎn)換:
轉(zhuǎn)換1:用戶級任務(wù)或者虛擬機(jī)管理器調(diào)用設(shè)置分區(qū)狀態(tài)服務(wù)并且操作模式設(shè)為空閑狀態(tài)。
轉(zhuǎn)換2:通過執(zhí)行錯(cuò)誤處理設(shè)置分區(qū)冷啟動(dòng)恢復(fù)動(dòng)作或進(jìn)行調(diào)度表切換將分區(qū)從空閑狀態(tài)切換到初始狀態(tài)。
轉(zhuǎn)換3:當(dāng)分區(qū)已經(jīng)完成初始化,并且調(diào)用設(shè)置分區(qū)狀態(tài)服務(wù),設(shè)定的操作模式是運(yùn)行狀態(tài)時(shí),分區(qū)就進(jìn)入運(yùn)行狀態(tài)工作。
轉(zhuǎn)換4:通過服務(wù)設(shè)置分區(qū)狀態(tài)為初始狀態(tài)、執(zhí)行錯(cuò)誤處理設(shè)置分區(qū)初始狀態(tài)恢復(fù)動(dòng)作或調(diào)度表切換時(shí)執(zhí)行切換動(dòng)作(初始狀態(tài))使分區(qū)從運(yùn)行狀態(tài)轉(zhuǎn)換到初始狀態(tài)。
轉(zhuǎn)換5:用戶級任務(wù)掛起分區(qū)時(shí)或者錯(cuò)誤處理執(zhí)行一個(gè)恢復(fù)動(dòng)作時(shí)或者調(diào)度表切換時(shí)配置分區(qū)的動(dòng)作為停機(jī)狀態(tài)時(shí),將當(dāng)前正在運(yùn)行的分區(qū)由運(yùn)行狀態(tài)轉(zhuǎn)換為停機(jī)狀態(tài)。
轉(zhuǎn)換6:用戶級任務(wù)需要由停機(jī)狀態(tài)恢復(fù)分區(qū)/準(zhǔn)備重啟分區(qū)時(shí)或者錯(cuò)誤處理執(zhí)行一個(gè)恢復(fù)動(dòng)作時(shí)或者調(diào)度表切換時(shí)配置分區(qū)的動(dòng)作為空閑時(shí),將當(dāng)前正在運(yùn)行的分區(qū)由停機(jī)狀態(tài)轉(zhuǎn)換為空閑狀態(tài)。
轉(zhuǎn)換7:用戶級任務(wù)完成重啟分區(qū)或者錯(cuò)誤處理執(zhí)行一個(gè)恢復(fù)動(dòng)作時(shí)或者調(diào)度表切換時(shí)配置分區(qū)的動(dòng)作為重啟時(shí),將當(dāng)前正在運(yùn)行的分區(qū)由空閑狀態(tài)轉(zhuǎn)換為運(yùn)行狀態(tài)。
4.1 測試環(huán)境
硬件測試環(huán)境包括:1臺(tái)PC機(jī)和1臺(tái)目標(biāo)機(jī)通過1臺(tái)以太網(wǎng)交換機(jī)連接,用于加載待測試程序及調(diào)試控制;1臺(tái)目標(biāo)機(jī)的串口通過1臺(tái)N-port(用于網(wǎng)口和串口之間的轉(zhuǎn)換),經(jīng)以太網(wǎng)交換機(jī)連接到PC機(jī),用于查看目標(biāo)機(jī)程序的執(zhí)行輸出。
用于測試和驗(yàn)證的4種目標(biāo)機(jī)硬件平臺(tái)包括NXP公司PowerPC MPC8641D(含兩個(gè)E600核)或者PowerPC P4080(含8個(gè)E500MC核)或者PowerPC P2020(含兩個(gè)E500V2核)或者PowerPC P2040(含4個(gè)E500MC核)。如圖5所示。
圖5 硬件測試環(huán)境
4.2 測試方案
一種多核分區(qū)管理方法在上述4種目標(biāo)機(jī)硬件平臺(tái)的多核配置模式下進(jìn)行了充分功能測試和驗(yàn)證,下面以Po-werPC MPC8641D雙核處理器為例說明測試方案。
給虛擬機(jī)管理器配置4個(gè)分區(qū),設(shè)置0分區(qū)為主控分區(qū),以固定時(shí)間間隔發(fā)出分區(qū)掛起、分區(qū)恢復(fù)和分區(qū)重啟動(dòng)命令;分區(qū)1和分區(qū)2為裸應(yīng)用分區(qū),分區(qū)3為客戶OS分區(qū),其中,0分區(qū)和2分區(qū)綁定在0核上,1分區(qū)和3分區(qū)綁定在1核上。每個(gè)分區(qū)包含基本的pager任務(wù)、異常處理任務(wù)、中斷處理任務(wù),以及其他用戶定制任務(wù)。
4.3 結(jié)果分析
利用串口監(jiān)控工具捕獲的程序輸出結(jié)果如圖6所示。
圖6 測試結(jié)果
從實(shí)驗(yàn)結(jié)果可看出,多核分區(qū)操作系統(tǒng)在啟動(dòng)過程中為每個(gè)分區(qū)創(chuàng)建一個(gè)coreMgr任務(wù),coreMgr0任務(wù)綁定在0核上,coreMgr1任務(wù)綁定在1核上,coreMgr2任務(wù)綁定在0核上,coreMgr3任務(wù)綁定在1核上。
分區(qū)0循環(huán)定時(shí)給目標(biāo)分區(qū)發(fā)出分區(qū)掛起、分區(qū)恢復(fù)和分區(qū)重啟動(dòng)命令,當(dāng)掛起分區(qū)1時(shí),分區(qū)1中的所有任務(wù)不再運(yùn)行,而分區(qū)2、分區(qū)3中的任務(wù)繼續(xù)運(yùn)行。當(dāng)恢復(fù)分區(qū)1時(shí),分區(qū)1中的所有任務(wù)恢復(fù)運(yùn)行;當(dāng)重啟支分區(qū)1時(shí),分區(qū)1的映像重新搬家,從分區(qū)1入口重新執(zhí)行,分區(qū)1內(nèi)的所有任務(wù)重新創(chuàng)建并調(diào)度執(zhí)行。
在執(zhí)行完成分區(qū)1的掛起、恢復(fù)和重啟操作之后,繼續(xù)對分區(qū)2和分區(qū)3進(jìn)行動(dòng)態(tài)控制,其過程和分區(qū)1動(dòng)態(tài)控制過程類似。
本文提出一種多核分區(qū)管理方法,包括分區(qū)配置、分區(qū)初始化和分區(qū)動(dòng)態(tài)控制,并對該設(shè)計(jì)方法的正確性進(jìn)行了功能測試和驗(yàn)證。該方法具有一定的創(chuàng)新性,是對航空領(lǐng)域滿足ARINC653標(biāo)準(zhǔn)的分區(qū)管理方法的擴(kuò)展。
一種多核分區(qū)管理方法提出了3個(gè)創(chuàng)新點(diǎn):
(1)實(shí)現(xiàn)了分區(qū)在核間的動(dòng)態(tài)控制,即一個(gè)物理核上的主控分區(qū)可對其它物理核上的目標(biāo)分區(qū)進(jìn)行掛起、恢復(fù)和重啟動(dòng)等動(dòng)態(tài)控制功能。
(2)設(shè)計(jì)了一種基于C/S架構(gòu)的多核分區(qū)動(dòng)態(tài)控制模型,使用pager任務(wù)來實(shí)現(xiàn)虛擬核,可用于對SMP模式的客戶OS進(jìn)行掛起、恢復(fù)和重啟動(dòng)控制。
(3)定義了虛擬機(jī)管理器的分區(qū)動(dòng)態(tài)控制的接口標(biāo)準(zhǔn),設(shè)計(jì)了相應(yīng)的分區(qū)狀態(tài)轉(zhuǎn)換過程,該接口標(biāo)準(zhǔn)是對ARINC653標(biāo)準(zhǔn)的擴(kuò)展。
一種多核分區(qū)管理方法已在某多核分區(qū)操作系統(tǒng)中實(shí)現(xiàn),且已進(jìn)行了充分的功能測試。將來需要進(jìn)一步完成的測試工作包括:對SMP模式的客戶OS(例如半虛擬化的嵌入式Linux)進(jìn)行分區(qū)動(dòng)態(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.