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| 国产噜噜在线视频观看| 色网站在线视频| 国产午夜人做人免费视频中文| 精品無碼一區在線觀看 | 久久亚洲精少妇毛片午夜无码| 国产va视频| 国产精品亚洲精品爽爽| 一级做a爰片久久免费| 99精品影院| 美女视频黄又黄又免费高清| 激情综合五月网| 72种姿势欧美久久久大黄蕉| 亚洲一级毛片在线观播放| a级毛片免费看| 中文字幕久久亚洲一区| 欧美一级一级做性视频| 国产成人AV大片大片在线播放 | 一区二区三区国产| 中文一级毛片| 萌白酱国产一区二区| 亚洲男人的天堂久久香蕉| 免费看a级毛片| 东京热一区二区三区无码视频| 久久这里只精品国产99热8| 欧美成人免费午夜全| 国产午夜一级毛片| 亚洲不卡av中文在线| 暴力调教一区二区三区| 亚洲精品高清视频| 秋霞午夜国产精品成人片| 2022国产无码在线| www精品久久| 99热这里只有精品5| 免费人成在线观看成人片| 亚洲欧美不卡视频| a毛片免费在线观看| 亚洲 成人国产| 日本在线欧美在线| 四虎免费视频网站| 99久久国产综合精品2023| 亚洲成a人在线播放www| 波多野结衣一区二区三区AV| 精品亚洲麻豆1区2区3区| 成人亚洲国产| 日本精品视频一区二区| 久久免费看片| 国产成人三级| 色综合五月婷婷| 欧美亚洲日韩不卡在线在线观看| 亚洲国产精品无码久久一线| 在线欧美日韩| 欧美午夜在线观看| 玖玖精品视频在线观看| 国产福利不卡视频| 中文字幕一区二区人妻电影| 国产福利在线免费观看| 欧美国产日韩在线播放| 91福利免费视频| 国产凹凸视频在线观看| 青青草国产一区二区三区| 国产高清毛片| 伊伊人成亚洲综合人网7777| 国产男人的天堂| 幺女国产一级毛片| 三区在线视频| 国产成人凹凸视频在线| 日韩激情成人| 亚洲天堂网2014| 孕妇高潮太爽了在线观看免费| 国产真实乱子伦视频播放| 69视频国产| 亚洲无码精品在线播放| 日韩a级片视频| 亚洲人成网站18禁动漫无码| 国产在线观看精品| 91精品啪在线观看国产91九色| 啪啪啪亚洲无码| 久无码久无码av无码| 97国产精品视频人人做人人爱| 欧美在线中文字幕|