999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

多核分區管理方法的設計與實現

2018-03-16 06:35:08郝繼鋒虞保忠郭芳超
計算機工程與設計 2018年2期

郝繼鋒,虞保忠,郭芳超

(中航工業西安航空計算技術研究所第三研究室,陜西 西安 710065)

0 引 言

在綜合化模塊化航空電子系統(IMA系統[1,2])中,一個處理器上運行一個或者多個航電應用(例如雷達、導航和通信),為了實現系統高度的容錯能力,需要保證這些航電應用之間運行的相對獨立性,基于此種原因,ARINC653標準[2,3]中引入分區管理的概念,目的是為了將運行在處理器上的多個航電應用按功能劃分為獨立分區,每個分區對應一個功能獨立的航電應用。單核分區操作系統中,一個分區由若干個并發執行的任務組成,分區內的所有任務共享分區資源(例如處理器時間、內存和其它資源),每一個分區都有獨立的數據和代碼,這樣能夠防止一個分區的錯誤蔓延到其它分區。

分區管理要求分區之間進行時空隔離,時空隔離技術已被國外廣泛應用于各種飛機中,例如Lockheed Martin F-35軍用聯合攻擊戰斗機[5]、Boeing 787民用客機[6]和A380民用客機[7]等,時空隔離技術包括時間隔離與空間隔離兩個技術[8]。

時間隔離指分區應用任務之間時間隔離,保證分區應用任務在用戶靜態配置的時間點上調度運行。時間隔離技術利用操作系統內核的時間管理模塊來實現分區應用任務的時間隔離效果。操作系統內核維護一個主幀時間,每個分區至少分配一個小幀時間。操作系統內核根據小幀時間調度相應的分區,在一個小幀時間內,按照固定優先級的時間片輪轉調度策略調度應用任務。

空間隔離指分區與分區之間的空間隔離保護、分區與操作系統內核之間的空間隔離保護??臻g隔離技術使用處理器的存儲管理單元(即硬件MMU)使每個任務處于不同的邏輯空間中,操作系統把每個任務的邏輯空間映射到不同的物理空間內,每個任務的物理空間不會重疊,當任務試圖訪問不屬于自己的空間或具有特權級的空間時,將會產生異常。

2015年8月21日由美國AEEC機構發布的ARINC653 P1-4標準[9]增加了對多核處理器的支持,多核處理器已成為一種行業的發展趨勢,同時也促進了航空電子系統的綜合化。恩智浦半導體公司(即NXP公司)設計了雙核、四核和八核等多個系列(例如T系列、P系列)的嵌入式多核處理器,嵌入式多核處理器的應用需要嵌入式多核操作系統的支持,從國外主流商用操作系統供應商提供的操作系統產品譜系可以看出,目前嵌入式多核分區操作系統的應用推廣已是大勢所趨。例如,美國Green Hills公司提供的INTEGRITY-178B tuMP[10]多核分區操作系統,該操作系統已在美國Rockwell Collins公司的RQ-7B影子無人飛行系統配套的GPC-3000任務計算機中搭載使用;再例如,美國Wind River公司提供的VxWorks 653 3.0[11]多核分區操作系統,該操作系統已在法國Airbus公司某民用直升機的統合化模塊化航空電子系統中應用和驗證。

目前,國內分區管理技術的研究和實現大多數是基于單核分區操作系統,而基于多核分區操作系統的研究和實現處于空白狀態。本文基于某多核分區操作系統(采用多核虛擬機管理器技術構建)設計并實現了一種多核分區管理方法,該方法包括3部分功能:分區配置、分區初始化和分區動態控制。

1 分區配置

分區配置數據給分區提供運行時的輸入數據,它對分區基本屬性進行配置,保證了分區的時間隔離特性、空間隔離特性、功能確定性配置、分區行為的確定性控制等。

1.1 基本配置數據

分區的基本配置數據:分區類型(裸應用分區和客戶OS分區)、分區名字、分區pager特權任務數量、分區ID、分區大小配置、分區調度配置、分區資源配置、分區權能配置、客戶OS綁定處理器核的數量、分區親和性配置、分區I/O管理配置等。

1.2 多核配置數據

通常來說,給一個單核模式的客戶OS配置一個虛擬核,該虛擬核在虛擬機管理器內有一個對應的執行線程;而給SMP模式的客戶OS配置二個或者多個虛擬核,這些虛擬核在虛擬機管理器內有多個對應的執行線程,每個執行線程在二個或者多個物理核上運行。為了支持SMP模式客戶OS(例如半虛擬化的嵌入式Linux)分區,需要定義如下配置數據:

(1)虛擬核數量:需要給SMP模式客戶OS配置二個或者多個虛擬核,如果不指定核映射關系,則虛擬核會映射到連續的物理核。

(2)物理核與虛擬核的映射關系:需要依次配置啟動虛擬核以及物理核與虛擬核的映射關系。

(3)虛擬核中斷配置:需要把中斷分配給指定的虛擬核,默認情況下,所有中斷都會投遞給0號虛擬核,但是,可以通過重新配置來修改默認配置,把中斷投遞給某個指定的目標虛擬核。

2 分區初始化

2.1 數據結構設計

為了實現多核分區動態控制功能,需要對分區控制塊進行重新設計,見表1。

表1 分區控制塊

2.2 分區初始化過程

當虛擬機管理器完成硬件平臺資源(包括CPU、內存、時鐘、中斷控制器和其它外設)以及相關軟件資源的初始化后,開始根據用戶分區配置數據對分區進行初始化操作。

在初始化分區時,為實現分區多核動態控制功能,首先,需要給每個分區(綁定于某個物理核上)創建一個高優先級的coreMgr任務(用于分區動態控制功能)、一個二值信號量(初始化為“占用狀態”)和一個自旋鎖(初始化為“空閑狀態”)。然后,讀取分區配置數據,并把分區掛到系統的資源管理鏈表上。最后,需要根據已創建的分區數量,為每一個分區創建一個或者多個pager任務來接管分區的管理權限,把pager任務加入虛擬機管理器的就緒隊列,等待以pager為載體來啟動分區。

因為每個分區初始化時把二值信號量初始化為“占用狀態”,所以每當coreMgr任務試圖獲取二值信號量時,會導致其進入“睡眠狀態”,并加入相應的睡眠等待隊列,這樣就讓高優先級的coreMgr任務切換到pager任務運行或者其它任務,讓其它任務有機會運行。

此外,在初始化每一個分區的每一個pager任務時,需要初始化分區的虛擬核信息,使用pager任務來實現虛擬核。

整個分區的初始化過程如圖1所示。

圖1 分區初始化過程

3 分區動態控制

3.1 分區控制模型

為了設計上的簡單性,本文采用基于C/S架構的多核分區控制模型,如圖2所示。

圖2 多核C/S架構分區控制模型

設計要點:

(1)S端設計:在S端給每個處理器核上設計若干個coreMgr任務對C端發送的分區控制命令進行阻塞式讀取和處理;

(2)緩沖區訪問核間互斥設計:分區控制命令管理緩沖區可能被綁定于多個處理器核上的任務訪問,因此,設計自旋鎖對該緩沖區訪問進行核間互斥保護;

(3)通信過程設計:利用二值信號量的獲取和釋放來對C端和S端的任務之間進行同步/通信,并把分區掛起、分區恢復和分區重啟命令分別保存在命令管理緩沖區的第0、1、2位。

3.2 分區掛起過程

當主控分區中的用戶任務或者虛擬機管理器中的內核任務因為某種原因/故障(例如信息安全組件需求、錯誤處理、異常處理、調度表切換),需要對目標分區執行掛起操作時:

C端通過系統調用把分區掛起命令以核間互斥方式寫到命令管理緩沖區的第0位中,然后,通過調用釋放二值信號量來喚醒S端目標分區的coreMgr任務,并等待S端分區掛起操作的返回結果。

S端的coreMgr任務以核間互斥方式讀取C端寫入命令管理緩沖區的第0位的值,解析出具體的分區掛起命令,并對該命令進行服務,服務完成后需要清除對應的掛起命令,表示已經完成分區掛起服務。

多核分區操作系統在用戶分區內創建的所有任務對虛擬機管理器都可見,因此,掛起分區操作需要掛起分區內的所有任務。因為客戶OS分區和裸應用分區對pager任務的處理方式不同:客戶OS分區的pager任務沒有掛起;而裸應用分區的pager任務執行完后執行掛起操作,所以,如果目標任務是pager任務,裸應用分區和客戶OS分區需要做不同處理,裸應用分區需要跳過pager任務,而客戶OS分區需要執行掛起操作。在掛起了分區內的所有任務之后,需要把分區設置為掛起狀態,此時便完成的S端的主要工作。

當考慮在虛擬機管理器之上運行SMP模式的客戶OS時(例如半虛擬化的嵌入式Linux),需要根據用戶的需求選擇掛起分區內的所有虛擬核、掛起除當前調用核之外的所有其它虛擬核或者只掛起一個指定的目標虛擬核。

3.3 分區恢復過程

當主控分區中的用戶任務需要把掛起后的分區恢復到原來的狀態時,必須調用分區恢復系統調用來完成此服務,分區恢復操作時:

C端把分區恢復命令以核間互斥方式寫到命令管理緩沖區的第1位中,然后,通過調用釋放二值信號量來喚醒S端目標分區的coreMgr任務,并等待S端分區恢復服務的返回結果。

S端的coreMgr任務以核間互斥方式讀取C端寫入命令管理緩沖區第1位的值,解析出具體的分區恢復命令,并對該命令進行服務,恢復服務完成后即清除對應的服務命令,表示已經完成分區恢復服務。

恢復分區操作和分區掛起命令執行相反的操作,需要恢復分區內所有的任務。因為裸應用分區在執行掛起操作時跳過pager任務;而客戶OS分區執行掛起操作,所以,如果目標任務是pager任務,裸應用分區和客戶OS分區需要做不同處理,裸應用分區需要跳過pager任務,而客戶OS分區需要執行恢復操作。在恢復了分區內的所有任務之后,需要把分區設置為恢復狀態,最后,把分區設置為正常狀態表示分區恢復到原始狀態,此時便完成的S端的主要工作。

當考慮在虛擬機管理器之上運行SMP模式的客戶OS時(例如半虛擬化的嵌入式Linux),需要根據用戶的需求選擇恢復分區內的所有虛擬核、恢復除當前調用核之外的所有其它虛擬核或者只恢復一個指定的目標虛擬核。

3.4 分區重啟過程

當主控分區中的用戶任務或者虛擬機管理器中的內核任務基于某種原因/故障(例如電源中斷、硬件復位、錯誤處理激活、調度表切換或者由用戶設置分區狀態),需要對目標分區進行重啟操作時:

C端把分區重啟命令以核間互斥方式寫到命令管理緩沖區的第2位中,然后,通過調用釋放二值信號量來喚醒S端目標分區的coreMgr任務,并等待S端分區重啟操作的返回結果。

S端的coreMgr任務以核間互斥方式讀取C端寫入命令管理緩沖區的第2位的值,解析出具體的分區重啟命令,并對該命令進行服務,重啟服務完成后即清除對應的服務命令,表示已經完成分區重啟服務。

重啟分區操作需要掛起并刪除分區內除pager之外所有的普通任務,在禁止MMU的條件下,重新把目標分區映像從加載地址搬到運行地址(物理地址),在分區映像搬家成功的條件下,把分區設置為重啟狀態,然后,重新啟動目標分區的pager任務(需要設置pager任務的PC和MSR,并重新把pager任務加入就緒隊列),最后,使能MMU,此時便完成的S端的主要工作。

本系統的ELF映像部署如圖3所示。

圖3 ELF映像部署

分區映像是由一個或者多個應用程序映像組成,每個應用程序映像作為分區映像的一個映像段;多個分區映像組成一個分區集合映像,每個分區映像作為分區集合映像的一個分區段;分區集合映像作為虛擬機管理器映像的數據段,而配置記錄映像作為虛擬機管理器映像的配置記錄段。

當需要把目標分區映像(代碼段、數據段和BSS段)從加載地址搬家到運行地址時,首先需要逐一查找目標分區段,找到目標分區段之后,在分區段內又逐一查找映像段,即找到目標應用程序ELF映像。為了減少映像文件的大小,加速分區重啟的速度,把ELF格式轉換為BIN格式,計算出BIN文件的入口地址后,根據用戶靜態配置的目標分區名找到對應的目標分區映像名,然后,把代碼段和數據段加載到BIN文件入口指定的物理地址空間內,即可完成S端分區重啟動的主要工作。

當考慮在虛擬機管理器之上運行SMP模式的客戶OS時(例如半虛擬化的嵌入式Linux),需要根據用戶的需求選擇重啟分區內的所有虛擬核、重啟除當前調用核之外的所有其它虛擬核或者只重啟一個指定的目標虛擬核。

3.5 分區狀態轉換

本文設計的分區狀態轉換過程如圖4所示。

圖4 分區狀態轉換

對分區定義如下4種狀態:

初始狀態(INIT):分區創建時的初始化狀態。引起分區進入初始狀態的原因包括:電源中斷、硬件復位、錯誤處理激活、調度表切換。

運行狀態(RUN):啟動虛擬機管理器所必須的任務已經創建完成,任務調度處于激活狀態,處于就緒態的任務可以運行,此時分區處于一個可操作的狀態。

停機狀態(HALT):由于某種原因/故障,需要對分區的任務資源進行掛起操作,停止分區內的所有任務的運行狀態。

空閑狀態(IDLE):分區時間窗口里不執行任何任務,沒有資源消耗,分配給分區的時間窗口不會改變。

分區狀態可以在一定條件下相互轉換:

轉換1:用戶級任務或者虛擬機管理器調用設置分區狀態服務并且操作模式設為空閑狀態。

轉換2:通過執行錯誤處理設置分區冷啟動恢復動作或進行調度表切換將分區從空閑狀態切換到初始狀態。

轉換3:當分區已經完成初始化,并且調用設置分區狀態服務,設定的操作模式是運行狀態時,分區就進入運行狀態工作。

轉換4:通過服務設置分區狀態為初始狀態、執行錯誤處理設置分區初始狀態恢復動作或調度表切換時執行切換動作(初始狀態)使分區從運行狀態轉換到初始狀態。

轉換5:用戶級任務掛起分區時或者錯誤處理執行一個恢復動作時或者調度表切換時配置分區的動作為停機狀態時,將當前正在運行的分區由運行狀態轉換為停機狀態。

轉換6:用戶級任務需要由停機狀態恢復分區/準備重啟分區時或者錯誤處理執行一個恢復動作時或者調度表切換時配置分區的動作為空閑時,將當前正在運行的分區由停機狀態轉換為空閑狀態。

轉換7:用戶級任務完成重啟分區或者錯誤處理執行一個恢復動作時或者調度表切換時配置分區的動作為重啟時,將當前正在運行的分區由空閑狀態轉換為運行狀態。

4 功能測試和驗證

4.1 測試環境

硬件測試環境包括:1臺PC機和1臺目標機通過1臺以太網交換機連接,用于加載待測試程序及調試控制;1臺目標機的串口通過1臺N-port(用于網口和串口之間的轉換),經以太網交換機連接到PC機,用于查看目標機程序的執行輸出。

用于測試和驗證的4種目標機硬件平臺包括NXP公司PowerPC MPC8641D(含兩個E600核)或者PowerPC P4080(含8個E500MC核)或者PowerPC P2020(含兩個E500V2核)或者PowerPC P2040(含4個E500MC核)。如圖5所示。

圖5 硬件測試環境

4.2 測試方案

一種多核分區管理方法在上述4種目標機硬件平臺的多核配置模式下進行了充分功能測試和驗證,下面以Po-werPC MPC8641D雙核處理器為例說明測試方案。

給虛擬機管理器配置4個分區,設置0分區為主控分區,以固定時間間隔發出分區掛起、分區恢復和分區重啟動命令;分區1和分區2為裸應用分區,分區3為客戶OS分區,其中,0分區和2分區綁定在0核上,1分區和3分區綁定在1核上。每個分區包含基本的pager任務、異常處理任務、中斷處理任務,以及其他用戶定制任務。

4.3 結果分析

利用串口監控工具捕獲的程序輸出結果如圖6所示。

圖6 測試結果

從實驗結果可看出,多核分區操作系統在啟動過程中為每個分區創建一個coreMgr任務,coreMgr0任務綁定在0核上,coreMgr1任務綁定在1核上,coreMgr2任務綁定在0核上,coreMgr3任務綁定在1核上。

分區0循環定時給目標分區發出分區掛起、分區恢復和分區重啟動命令,當掛起分區1時,分區1中的所有任務不再運行,而分區2、分區3中的任務繼續運行。當恢復分區1時,分區1中的所有任務恢復運行;當重啟支分區1時,分區1的映像重新搬家,從分區1入口重新執行,分區1內的所有任務重新創建并調度執行。

在執行完成分區1的掛起、恢復和重啟操作之后,繼續對分區2和分區3進行動態控制,其過程和分區1動態控制過程類似。

5 結束語

本文提出一種多核分區管理方法,包括分區配置、分區初始化和分區動態控制,并對該設計方法的正確性進行了功能測試和驗證。該方法具有一定的創新性,是對航空領域滿足ARINC653標準的分區管理方法的擴展。

一種多核分區管理方法提出了3個創新點:

(1)實現了分區在核間的動態控制,即一個物理核上的主控分區可對其它物理核上的目標分區進行掛起、恢復和重啟動等動態控制功能。

(2)設計了一種基于C/S架構的多核分區動態控制模型,使用pager任務來實現虛擬核,可用于對SMP模式的客戶OS進行掛起、恢復和重啟動控制。

(3)定義了虛擬機管理器的分區動態控制的接口標準,設計了相應的分區狀態轉換過程,該接口標準是對ARINC653標準的擴展。

一種多核分區管理方法已在某多核分區操作系統中實現,且已進行了充分的功能測試。將來需要進一步完成的測試工作包括:對SMP模式的客戶OS(例如半虛擬化的嵌入式Linux)進行分區動態控制功能測試。

[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.

主站蜘蛛池模板: 欧美激情视频一区二区三区免费| 亚洲国内精品自在自线官| 国产色婷婷| 美女免费精品高清毛片在线视| 青青草91视频| 在线看片中文字幕| 欧美成人看片一区二区三区| 99中文字幕亚洲一区二区| a色毛片免费视频| 精品国产Av电影无码久久久| 亚洲天堂网在线观看视频| 中文字幕久久亚洲一区| 多人乱p欧美在线观看| 国产微拍精品| 蜜臀AV在线播放| 亚洲床戏一区| 亚洲有码在线播放| 18禁高潮出水呻吟娇喘蜜芽| 欧美高清三区| 成人久久18免费网站| 国产成人精品一区二区秒拍1o| 色网站免费在线观看| 91麻豆国产视频| 国产精品男人的天堂| 亚洲国产亚洲综合在线尤物| 97在线观看视频免费| 人妻少妇乱子伦精品无码专区毛片| 国产AV毛片| 国产综合精品一区二区| 欧美另类精品一区二区三区 | 国产精品网址在线观看你懂的| 欧美亚洲国产一区| 成人综合久久综合| 午夜视频www| 亚洲av色吊丝无码| 欧美黄网在线| 日韩av在线直播| 亚洲国产精品日韩欧美一区| 99热最新在线| 91口爆吞精国产对白第三集| 欧美日本视频在线观看| 亚洲成年人网| 中文字幕乱码二三区免费| 中日韩一区二区三区中文免费视频| 青青青国产视频手机| 精品福利视频导航| 在线永久免费观看的毛片| 成人在线观看一区| 欧美97色| 亚洲人成网18禁| 亚洲中文久久精品无玛| 丁香婷婷在线视频| 91成人免费观看| 国产一在线观看| 婷婷伊人久久| 狠狠做深爱婷婷久久一区| 一级毛片中文字幕| 国产97视频在线观看| 亚洲日韩精品欧美中文字幕| 91香蕉视频下载网站| 在线视频亚洲色图| 最新国产在线| 欧美成a人片在线观看| 国产美女精品人人做人人爽| 婷婷六月激情综合一区| 欧美另类精品一区二区三区| 亚洲中文字幕在线精品一区| 亚洲网综合| 国产成人亚洲毛片| 日韩免费毛片| 亚洲精品亚洲人成在线| 中文字幕自拍偷拍| 暴力调教一区二区三区| 亚欧成人无码AV在线播放| 成人综合久久综合| 香蕉色综合| 国产新AV天堂| 91啪在线| 国产全黄a一级毛片| 婷婷色一二三区波多野衣| 亚洲第一中文字幕| 久久精品娱乐亚洲领先|