時間:2007-12-13 16:54:00來源:dujing
 圖1給出了ARINC653中各部分之間的關系[/align] 
分區(qū)和區(qū)間管理 
    分區(qū)(Partitioning)是ARINC653中一個核心概念。在IMA(Integrated Modular Avionics)系統(tǒng)中,一個核心模塊會包含一個或多個航空電子應用,并且這些應用要能夠獨立運行。分區(qū)就是航空電子應用中的一個功能劃分。分區(qū)的單位稱為區(qū)間,區(qū)間內(nèi)的每一個執(zhí)行單元稱為進程。每一個區(qū)間具有自己獨立的數(shù)據(jù)、上下文和運行環(huán)境,這樣做的好處是能夠防止一個區(qū)間的錯誤影響到其他區(qū)間。另外,它能使得整個系統(tǒng)容易驗證、確認和認證。 
    區(qū)間化以及區(qū)間的管理和調(diào)度是由OS來實現(xiàn)的。ARINC653為區(qū)間的調(diào)度規(guī)定了一種基于時間窗的循環(huán)調(diào)度算法。這種調(diào)度算法的原理如圖2所示。 
[align=center]
圖1給出了ARINC653中各部分之間的關系[/align] 
分區(qū)和區(qū)間管理 
    分區(qū)(Partitioning)是ARINC653中一個核心概念。在IMA(Integrated Modular Avionics)系統(tǒng)中,一個核心模塊會包含一個或多個航空電子應用,并且這些應用要能夠獨立運行。分區(qū)就是航空電子應用中的一個功能劃分。分區(qū)的單位稱為區(qū)間,區(qū)間內(nèi)的每一個執(zhí)行單元稱為進程。每一個區(qū)間具有自己獨立的數(shù)據(jù)、上下文和運行環(huán)境,這樣做的好處是能夠防止一個區(qū)間的錯誤影響到其他區(qū)間。另外,它能使得整個系統(tǒng)容易驗證、確認和認證。 
    區(qū)間化以及區(qū)間的管理和調(diào)度是由OS來實現(xiàn)的。ARINC653為區(qū)間的調(diào)度規(guī)定了一種基于時間窗的循環(huán)調(diào)度算法。這種調(diào)度算法的原理如圖2所示。 
[align=center] 圖2 基于時間窗的循環(huán)調(diào)度算法原理 [/align]
    為了完成各區(qū)間的周期性調(diào)度,由OS維護一個固定時間長度的主時間框架,該時間框架在模塊的運行期內(nèi)周期性的重復。每個時間框架可以劃分為若干個時間窗口。系統(tǒng)利用一個事先確定的配置表,在規(guī)定的時間窗口內(nèi)激活對應區(qū)間的運行。這樣就能夠保證每個應用在分配給它的時間周期內(nèi)訪問公共資源不被打斷。 
    ARINC supplement 1對主時間框架的時間定義原則進行了補充。它規(guī)定主時間框架的大小應該是核心模塊中所有區(qū)間周期的最小公倍數(shù)的正整數(shù)倍,并應考慮到每個區(qū)間每次執(zhí)行的時間長度和執(zhí)行頻率。 
    在ARINC653 Supplement 1發(fā)布時又增加了系統(tǒng)區(qū)間屬性和啟動條件屬性。區(qū)間的工作模式包括空閑,冷啟動,熱啟動和正常四種,如圖3所示。每個區(qū)間所需資源在系統(tǒng)構建時指定,在區(qū)間初始化完成時區(qū)間對象創(chuàng)建。OS在進入運行模式時啟動應用區(qū)間,然后區(qū)間進入正常運行模式。監(jiān)測管理功能在響應致命錯誤時將重啟區(qū)間或者停止區(qū)間的運行。 
[align=center]
圖2 基于時間窗的循環(huán)調(diào)度算法原理 [/align]
    為了完成各區(qū)間的周期性調(diào)度,由OS維護一個固定時間長度的主時間框架,該時間框架在模塊的運行期內(nèi)周期性的重復。每個時間框架可以劃分為若干個時間窗口。系統(tǒng)利用一個事先確定的配置表,在規(guī)定的時間窗口內(nèi)激活對應區(qū)間的運行。這樣就能夠保證每個應用在分配給它的時間周期內(nèi)訪問公共資源不被打斷。 
    ARINC supplement 1對主時間框架的時間定義原則進行了補充。它規(guī)定主時間框架的大小應該是核心模塊中所有區(qū)間周期的最小公倍數(shù)的正整數(shù)倍,并應考慮到每個區(qū)間每次執(zhí)行的時間長度和執(zhí)行頻率。 
    在ARINC653 Supplement 1發(fā)布時又增加了系統(tǒng)區(qū)間屬性和啟動條件屬性。區(qū)間的工作模式包括空閑,冷啟動,熱啟動和正常四種,如圖3所示。每個區(qū)間所需資源在系統(tǒng)構建時指定,在區(qū)間初始化完成時區(qū)間對象創(chuàng)建。OS在進入運行模式時啟動應用區(qū)間,然后區(qū)間進入正常運行模式。監(jiān)測管理功能在響應致命錯誤時將重啟區(qū)間或者停止區(qū)間的運行。 
[align=center] 圖3 區(qū)間狀態(tài)轉(zhuǎn)化模型 [/align]
A-RTOS系統(tǒng)設計與實現(xiàn) 
    A-RTOS的系統(tǒng)結(jié)構如圖4所示。在此系統(tǒng)中,各個應用工作在所屬區(qū)間的環(huán)境中,并且應用和內(nèi)核及各個應用之間都被保護墻隔離,無法相互破壞,從而保證了核心模塊的可靠性。
 
[align=center]
圖3 區(qū)間狀態(tài)轉(zhuǎn)化模型 [/align]
A-RTOS系統(tǒng)設計與實現(xiàn) 
    A-RTOS的系統(tǒng)結(jié)構如圖4所示。在此系統(tǒng)中,各個應用工作在所屬區(qū)間的環(huán)境中,并且應用和內(nèi)核及各個應用之間都被保護墻隔離,無法相互破壞,從而保證了核心模塊的可靠性。
 
[align=center] 圖4 A-RTOS的系統(tǒng)結(jié)構[/align]
隔離和保護機制 
    隔離和保護是ARINC653首要強調(diào)的特性,也是必須解決的重點之一。A-RTOS主要采用兩種方式來實現(xiàn)應用與內(nèi)核以及應用之間的隔離和保護。 
    第一種方式是使用內(nèi)存管理單元MMU。通過MMU能夠?qū)崿F(xiàn)邏輯地址到物理地址的轉(zhuǎn)化,并且對訪問權限進行控制。這樣可以保護操作系統(tǒng)內(nèi)核不受應用軟件有意或無意的破壞,也有效的防止了各應用軟件之間的相互破壞。圖5給出了MMU的頁目錄/頁表方式的地址轉(zhuǎn)換流程。 
[align=center]
圖4 A-RTOS的系統(tǒng)結(jié)構[/align]
隔離和保護機制 
    隔離和保護是ARINC653首要強調(diào)的特性,也是必須解決的重點之一。A-RTOS主要采用兩種方式來實現(xiàn)應用與內(nèi)核以及應用之間的隔離和保護。 
    第一種方式是使用內(nèi)存管理單元MMU。通過MMU能夠?qū)崿F(xiàn)邏輯地址到物理地址的轉(zhuǎn)化,并且對訪問權限進行控制。這樣可以保護操作系統(tǒng)內(nèi)核不受應用軟件有意或無意的破壞,也有效的防止了各應用軟件之間的相互破壞。圖5給出了MMU的頁目錄/頁表方式的地址轉(zhuǎn)換流程。 
[align=center] 圖5 頁目錄/頁表方式的地址轉(zhuǎn)換流程 [/align]
    第二種方式就是系統(tǒng)調(diào)用。A-RTOS為了實現(xiàn)對內(nèi)核及應用之間的保護,提供了兩種運行形態(tài):用戶態(tài)和系統(tǒng)態(tài)。其中操作系統(tǒng)內(nèi)核是運行在系統(tǒng)態(tài)的。因此用戶態(tài)的應用是不能夠直接調(diào)用系統(tǒng)內(nèi)核提供的功能接口的,必須通過TRAP系統(tǒng)調(diào)用方式來進行。 
    此種方式下,當用戶態(tài)的應用需要調(diào)用內(nèi)核提供的系統(tǒng)調(diào)用時,首先要執(zhí)行一組特殊的指令使系統(tǒng)進入系統(tǒng)態(tài)以便執(zhí)行需要的系統(tǒng)調(diào)用,當調(diào)用完成后,內(nèi)核將執(zhí)行另一組特征指令將系統(tǒng)返回到用戶態(tài)。 
    每種支持保護模式的系統(tǒng)都提供了專門的軟中斷命令來完成從用戶態(tài)進入系統(tǒng)態(tài)的功能。系統(tǒng)掛接一個軟中斷處理函數(shù),所有的系統(tǒng)調(diào)用都通過這個軟中斷進入并以不同的參數(shù)值(即系統(tǒng)調(diào)用號)來加以區(qū)分。 
    系統(tǒng)調(diào)用的另一種形式是稱為CALL-LIB的調(diào)用庫機制。此種機制類似于windows系統(tǒng)的動態(tài)鏈接庫,可以滿足動態(tài)加載和更新組件的需要,也是A-RTOS的特點之一。 
區(qū)間調(diào)度機制 
    ARINC653規(guī)定,區(qū)間調(diào)度模式的主要特征是:1)調(diào)度單元是區(qū)間;2)區(qū)間沒有優(yōu)先級;3)調(diào)度算法是預先確定的,按照固定的周期重復,并且只能由系統(tǒng)集成者進行配置。每個循環(huán)中,至少要為區(qū)間分配一個區(qū)間窗口。 
    在A-RTOS中,為了方便系統(tǒng)處理和能更好符合ARINC653規(guī)范,對以上規(guī)定進行了一定程度的修訂:調(diào)度單元是區(qū)間和系統(tǒng)進程;區(qū)間具有優(yōu)先級。但這些修訂不影響操作系統(tǒng)區(qū)間層POS以及應用程序使用者,所以在外部特性上并不與ARINC653規(guī)定違背。 
    除此之外, A-RTOS還引入兩個系統(tǒng)區(qū)間:Kernel區(qū)間和Idle區(qū)間。Kernel區(qū)間優(yōu)先級最高,用于為整個系統(tǒng)的運行提供支持;并且一些系統(tǒng)級進程,也屬于Kernel區(qū)間,方便調(diào)度。Idle區(qū)間具有最低的優(yōu)先級,用于填充系統(tǒng)時間。當系統(tǒng)中沒有其他區(qū)間可以運行,就運行Idle區(qū)間。 
    A-RTOS區(qū)間的調(diào)度原則是首先基于優(yōu)先級調(diào)度,對同一優(yōu)先級的區(qū)間可使用時間片輪轉(zhuǎn)調(diào)度或者基于時間窗的循環(huán)調(diào)度策略。 
    A-RTOS采用兩級調(diào)度機制。系統(tǒng)中具有區(qū)間的優(yōu)先級位圖和每個優(yōu)先級對應的就緒鏈表,每個區(qū)間中也包含系統(tǒng)進程的優(yōu)先級位圖和對應的就緒鏈表。利用優(yōu)先級位圖和就緒鏈表,可以很容易的實現(xiàn)對區(qū)間和系統(tǒng)進程的調(diào)度。圖6給出了這種調(diào)度模型。 
[align=center]
圖5 頁目錄/頁表方式的地址轉(zhuǎn)換流程 [/align]
    第二種方式就是系統(tǒng)調(diào)用。A-RTOS為了實現(xiàn)對內(nèi)核及應用之間的保護,提供了兩種運行形態(tài):用戶態(tài)和系統(tǒng)態(tài)。其中操作系統(tǒng)內(nèi)核是運行在系統(tǒng)態(tài)的。因此用戶態(tài)的應用是不能夠直接調(diào)用系統(tǒng)內(nèi)核提供的功能接口的,必須通過TRAP系統(tǒng)調(diào)用方式來進行。 
    此種方式下,當用戶態(tài)的應用需要調(diào)用內(nèi)核提供的系統(tǒng)調(diào)用時,首先要執(zhí)行一組特殊的指令使系統(tǒng)進入系統(tǒng)態(tài)以便執(zhí)行需要的系統(tǒng)調(diào)用,當調(diào)用完成后,內(nèi)核將執(zhí)行另一組特征指令將系統(tǒng)返回到用戶態(tài)。 
    每種支持保護模式的系統(tǒng)都提供了專門的軟中斷命令來完成從用戶態(tài)進入系統(tǒng)態(tài)的功能。系統(tǒng)掛接一個軟中斷處理函數(shù),所有的系統(tǒng)調(diào)用都通過這個軟中斷進入并以不同的參數(shù)值(即系統(tǒng)調(diào)用號)來加以區(qū)分。 
    系統(tǒng)調(diào)用的另一種形式是稱為CALL-LIB的調(diào)用庫機制。此種機制類似于windows系統(tǒng)的動態(tài)鏈接庫,可以滿足動態(tài)加載和更新組件的需要,也是A-RTOS的特點之一。 
區(qū)間調(diào)度機制 
    ARINC653規(guī)定,區(qū)間調(diào)度模式的主要特征是:1)調(diào)度單元是區(qū)間;2)區(qū)間沒有優(yōu)先級;3)調(diào)度算法是預先確定的,按照固定的周期重復,并且只能由系統(tǒng)集成者進行配置。每個循環(huán)中,至少要為區(qū)間分配一個區(qū)間窗口。 
    在A-RTOS中,為了方便系統(tǒng)處理和能更好符合ARINC653規(guī)范,對以上規(guī)定進行了一定程度的修訂:調(diào)度單元是區(qū)間和系統(tǒng)進程;區(qū)間具有優(yōu)先級。但這些修訂不影響操作系統(tǒng)區(qū)間層POS以及應用程序使用者,所以在外部特性上并不與ARINC653規(guī)定違背。 
    除此之外, A-RTOS還引入兩個系統(tǒng)區(qū)間:Kernel區(qū)間和Idle區(qū)間。Kernel區(qū)間優(yōu)先級最高,用于為整個系統(tǒng)的運行提供支持;并且一些系統(tǒng)級進程,也屬于Kernel區(qū)間,方便調(diào)度。Idle區(qū)間具有最低的優(yōu)先級,用于填充系統(tǒng)時間。當系統(tǒng)中沒有其他區(qū)間可以運行,就運行Idle區(qū)間。 
    A-RTOS區(qū)間的調(diào)度原則是首先基于優(yōu)先級調(diào)度,對同一優(yōu)先級的區(qū)間可使用時間片輪轉(zhuǎn)調(diào)度或者基于時間窗的循環(huán)調(diào)度策略。 
    A-RTOS采用兩級調(diào)度機制。系統(tǒng)中具有區(qū)間的優(yōu)先級位圖和每個優(yōu)先級對應的就緒鏈表,每個區(qū)間中也包含系統(tǒng)進程的優(yōu)先級位圖和對應的就緒鏈表。利用優(yōu)先級位圖和就緒鏈表,可以很容易的實現(xiàn)對區(qū)間和系統(tǒng)進程的調(diào)度。圖6給出了這種調(diào)度模型。 
[align=center] 圖6 A-RTOS的區(qū)間調(diào)度模型[/align]
    調(diào)度模塊首先根據(jù)系統(tǒng)中的區(qū)間優(yōu)先級位圖和區(qū)間就緒鏈表來進行區(qū)間調(diào)度,被調(diào)度到的區(qū)間再根據(jù)區(qū)間內(nèi)的進程優(yōu)先級位圖和進程就緒鏈表進行系統(tǒng)進程的調(diào)度。此方法相對于一級調(diào)度方式而言,能夠保證調(diào)度時間的確定性,系統(tǒng)調(diào)度時間不會因為區(qū)間和系統(tǒng)進程的多少而發(fā)生變化,符合實時操作系統(tǒng)的定義。 
    在進行基于時間窗調(diào)度時,兩個系統(tǒng)區(qū)間實際上也會參與調(diào)度。Kernel區(qū)間的運行時間會計算在區(qū)間調(diào)度配置表中當前區(qū)間的運行時間上。因此對于某應用區(qū)間而言,它的運行時間實際上會包含系統(tǒng)區(qū)間的運行。 
進程池機制 
    在A-RTOS中,進程池是指一組由系統(tǒng)進行維護的進程,這些進程能夠為應用提供一組服務。應用通過系統(tǒng)提供的調(diào)用接口對系統(tǒng)提出應用請求,系統(tǒng)把應用的請求交給進程池,進程池自動選擇一個空閑進程對其進行服務,當服務完畢以后,系統(tǒng)會回收該系統(tǒng)進程。 
    進程池主要應用在時鐘定時器服務、中斷服務和異步IO操作。 
異步信號和異步IO機制 
    A-RTOS支持異步信號機制,允許在某種情況下COS以異步方式發(fā)送信號到上層的POS。異步信號的一個典型使用就是異步IO。這是由于在ARINC653的應用中,POS中的進程通過系統(tǒng)調(diào)用產(chǎn)生阻塞性IO請求的時候,如果IO不是異步的,則此時該進程就會阻塞,等待系統(tǒng)調(diào)用的返回。但是COS并不知道POS中的應用進程的存在,當其中的一個進程阻塞的時候,整個區(qū)間都會被阻塞。采用異步IO方式可避免這種情況的發(fā)生。 
    當應用請求了阻塞性的IO服務時,A-RTOS會啟動稱為一個系統(tǒng)進程來進行應用請求的IO操作,這就是異步IO機制。A-RTOS將這種為實現(xiàn)異步IO操作而創(chuàng)建的系統(tǒng)進程稱為worker進程。 
    如圖7,在ARINC653的應用中,當POS中的一個進程調(diào)用異步IO系統(tǒng)調(diào)用時,該系統(tǒng)調(diào)用檢查此IO是否為阻塞工作方式,如果是,則創(chuàng)建一個worker進程去完成這個要求的IO工作,并返回一個AIO_PENDING值到POS。POS檢查到這個返回值以后,把正在進行異步IO調(diào)用的進程從就緒隊列取下放到等待隊列,然后進行重調(diào)度。當worker進程完成了要求的IO操作時,即發(fā)送異步信號到POS,從而喚醒原阻塞進程。 
[align=center]
圖6 A-RTOS的區(qū)間調(diào)度模型[/align]
    調(diào)度模塊首先根據(jù)系統(tǒng)中的區(qū)間優(yōu)先級位圖和區(qū)間就緒鏈表來進行區(qū)間調(diào)度,被調(diào)度到的區(qū)間再根據(jù)區(qū)間內(nèi)的進程優(yōu)先級位圖和進程就緒鏈表進行系統(tǒng)進程的調(diào)度。此方法相對于一級調(diào)度方式而言,能夠保證調(diào)度時間的確定性,系統(tǒng)調(diào)度時間不會因為區(qū)間和系統(tǒng)進程的多少而發(fā)生變化,符合實時操作系統(tǒng)的定義。 
    在進行基于時間窗調(diào)度時,兩個系統(tǒng)區(qū)間實際上也會參與調(diào)度。Kernel區(qū)間的運行時間會計算在區(qū)間調(diào)度配置表中當前區(qū)間的運行時間上。因此對于某應用區(qū)間而言,它的運行時間實際上會包含系統(tǒng)區(qū)間的運行。 
進程池機制 
    在A-RTOS中,進程池是指一組由系統(tǒng)進行維護的進程,這些進程能夠為應用提供一組服務。應用通過系統(tǒng)提供的調(diào)用接口對系統(tǒng)提出應用請求,系統(tǒng)把應用的請求交給進程池,進程池自動選擇一個空閑進程對其進行服務,當服務完畢以后,系統(tǒng)會回收該系統(tǒng)進程。 
    進程池主要應用在時鐘定時器服務、中斷服務和異步IO操作。 
異步信號和異步IO機制 
    A-RTOS支持異步信號機制,允許在某種情況下COS以異步方式發(fā)送信號到上層的POS。異步信號的一個典型使用就是異步IO。這是由于在ARINC653的應用中,POS中的進程通過系統(tǒng)調(diào)用產(chǎn)生阻塞性IO請求的時候,如果IO不是異步的,則此時該進程就會阻塞,等待系統(tǒng)調(diào)用的返回。但是COS并不知道POS中的應用進程的存在,當其中的一個進程阻塞的時候,整個區(qū)間都會被阻塞。采用異步IO方式可避免這種情況的發(fā)生。 
    當應用請求了阻塞性的IO服務時,A-RTOS會啟動稱為一個系統(tǒng)進程來進行應用請求的IO操作,這就是異步IO機制。A-RTOS將這種為實現(xiàn)異步IO操作而創(chuàng)建的系統(tǒng)進程稱為worker進程。 
    如圖7,在ARINC653的應用中,當POS中的一個進程調(diào)用異步IO系統(tǒng)調(diào)用時,該系統(tǒng)調(diào)用檢查此IO是否為阻塞工作方式,如果是,則創(chuàng)建一個worker進程去完成這個要求的IO工作,并返回一個AIO_PENDING值到POS。POS檢查到這個返回值以后,把正在進行異步IO調(diào)用的進程從就緒隊列取下放到等待隊列,然后進行重調(diào)度。當worker進程完成了要求的IO操作時,即發(fā)送異步信號到POS,從而喚醒原阻塞進程。 
[align=center] 圖7 異步IO工作流程示意圖[/align]
圖7 異步IO工作流程示意圖[/align]
標簽:
                                 
                            
傳動網(wǎng)版權與免責聲明:凡本網(wǎng)注明[來源:傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權均為傳動網(wǎng)(www.surachana.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權屬于原版權人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
產(chǎn)品新聞
更多>2025-10-31
2025-10-22
2025-10-17
2025-10-11
2025-10-09
2025-09-23