天脈2(ACoreOS653)操作系統(tǒng)學習02
一、分區(qū)內通信方法
分區(qū)內通信指同一分區(qū)內進程之間的通信。ARINC 653定義的分區(qū)內進程通信機制,包括:緩存隊列(Buffers-Queue)、黑板(Blackboards)、信號量(Semaphores)和事件(Events)。其中緩存隊列和黑板用于進程間通信,信號量和事件用于進程間同步與互斥。
緩存隊列允許其中的消息以隊列形式存儲,消息不允許覆蓋;
黑板在任何時刻最多只保留一個消息,消息允許覆蓋。
信號量提供對資源的受控訪問;
事件通過通知等待進程某種條件的發(fā)生來支持進程間同步控制。
1.緩存隊列
消息緩存(message buffer)在發(fā)送過程中,等待發(fā)送的消息按照先進先出次序存放在緩存隊列中。緩存隊列中可存放消息的數量由創(chuàng)建時緩存區(qū)的大小決定。
接收消息的進程按照先進先出或優(yōu)先級次序原則排隊接收緩存消息。在按優(yōu)先級次序排隊的情況下,相同優(yōu)先級的接收進程按照先進先出原則排隊。接收消息的進程的排隊原則在緩存隊列創(chuàng)建時定義。
如果多個進程等待一個緩存隊列,當這個緩存隊列不空,則排隊原則(先進先出原則或者優(yōu)先級原則)將決定哪個進程獲得消息。操作系統(tǒng)將把該進程從等待隊列中移出,并置為就緒態(tài),并將消息從緩存隊列中移出。
如果一個進程試圖從空緩存隊列中接收消息,或者發(fā)送消息到滿的緩存隊列,操作系統(tǒng)將產生進程重調度,該進程將被放入等待隊列中,等待一段指定的時間,如果在該段時間內沒有消息被接收或者發(fā)送,操作系統(tǒng)將自動從隊列中移出該進程,將其置為就緒狀態(tài)。

2.黑板
通過黑板,可以將消息發(fā)布給分區(qū)內的所有進程
黑板中的消息不允許排隊,任何寫到黑板的消息將一直保持直到被清除或者被新消息覆蓋。這就允許發(fā)送進程在任何時刻都能發(fā)送消息,允許接收進程在任何時刻都可以訪問最新的消息。
分區(qū)內任何進程可以從黑板上讀取消息、在黑板上寫一個消息或者清空黑板。
如果進程試圖從空黑板中讀取消息,操作系統(tǒng)將產生進程重調度,該進程將被放入等待隊列中,等待一段指定的時間,如果在該段時間內沒有消息到達,操作系統(tǒng)將自動從隊列中移出該進程,將其置為就緒狀態(tài)。
當有消息到達黑板上時,操作系統(tǒng)將從進程等待隊列中移出所有等待進程,將他們置為就緒狀態(tài),而消息仍然保留在黑板上。當黑板被清除時,黑板變?yōu)榭諣顟B(tài)。

3.信號量
提供對資源的受控訪問,用于進程間的同步和互斥
兩種信號量:計數信號量和互斥信號量
計數信號量功能與標準一致,用于多個資源的互斥訪問
互斥信號量作為擴展功能,既可以實現同步,也可以實現互斥,且可以嵌套訪問
等待信號量的進程可以按照先進先出原則,也可以按照優(yōu)先級次序原則在隊列中排隊。在優(yōu)先級次序條件下,同等優(yōu)先級的進程按照先進先出原則排隊。
4.事件
事件是一種進程通信機制:它可以把某種發(fā)生的情況告知等待該情況的進程。事件是由一個二值狀態(tài)變量(狀態(tài)為“有效態(tài)(UP)”和“無效態(tài)(DOWN)”)和一組等待進程組成。
同一分區(qū)內的進程可以設置和清除事件。事件創(chuàng)建時,被設置為“無效態(tài)”。為了通知事件條件的發(fā)生,可以設置指定的事件為“有效態(tài)”,此時,所有等待該事件的進程從等待狀態(tài)變?yōu)榫途w狀態(tài),然后進入重調度。等待事件的進程執(zhí)行順序應該只依賴于分區(qū)內進程調度規(guī)則。
進程可以同時等待超過一個以上的事件,事件相互之間是獨立的。
事件不排隊、不攜帶或傳輸數據。

二、分區(qū)間的通信方法
1.概念
分區(qū)間通信是指在同一核心模塊或不同核心模塊上運行分區(qū)之間的通信。分區(qū)間通信可分為四類:
a) 同一核心模塊內分區(qū)間的通信;
b) 同一機箱內不同核心模塊上的分區(qū)間的通信;
c) 不同機箱的分區(qū)間的通信;
d) 航空電子系統(tǒng)與其它設備之間的通信。
所有的分區(qū)間通信都基于消息進行,消息從單個的源發(fā)出,到一個或多個目的地。消息的目的地是分區(qū)而不是分區(qū)內的進程。通過消息連接分區(qū)的基本機制是通道(channel)。通道指定從源到目的地的消息傳遞模式,以及要發(fā)送的消息的特性。
分區(qū)通過已定義的訪問點訪問通道,訪問點稱為端口(port)。通道由端口以及相關的資源組成,端口提供資源以允許分區(qū)在特定的通道中發(fā)送或接收消息。

2.方式
通道可以分布在組成系統(tǒng)的各個核心模塊上,每個通信節(jié)點(核心模塊,網關,I/O模塊等)可以通過配置表單獨配置。系統(tǒng)設計人員必須確保每個通道的不同端口有一致性的配置,而源、目的、傳遞模式和每個通道的唯一性不會在運行時改變。通道的消息傳遞模式包含兩種:采樣模式和隊列模式。
分區(qū)間消息被定義為有限長度的連續(xù)數據塊,分Fixed/Variable Length、Periodic/Aperiodic、Broadcast, Multicast and Unicast Messages。固定長度且允許覆蓋的采樣方式和可變長度且不允許覆蓋的隊列方式。
(1)隊列模式
隊列方式不允許在傳遞中覆蓋先前的消息,即消息在隊列方式中不會丟失。
通道中以隊列方式運行的端口允許緩沖多個消息,源分區(qū)發(fā)送的消息存儲在源端口的消息隊列中,直到被發(fā)送;當消息到達目的端口后,消息將緩存在目的端口的消息隊列中。消息隊列通過通信協(xié)議來管理,以先進先出順序將消息從源端口發(fā)送到目的端口。
隊列方式支持變長消息,它允許對消息進行分割和重組。如果不直接支持變長消息的發(fā)送,源端口必須將消息分解成一系列固定長度的分段,目的端口必須重組這些分段。分段的長度應小于或等于通道內所有端口可接受的最大未分割長度。
適用范圍:適用于需要連續(xù)數據的通信方式
(2)采樣模式
在采樣方式下,消息保持在采樣端口直到被發(fā)送或者被新的消息所覆蓋。采樣方式允許源分區(qū)在任何時間發(fā)送消息,每個新的消息覆蓋當前消息并持續(xù)到被覆蓋。目的分區(qū)在任何時間訪問最新的廣播消息。
采樣方式下沒有消息隊列,不允許對消息進行分割,必須為每個通道定義最大未分割消息長度。只有固定長度的消息允許以采樣方式發(fā)送。
此模式下端口的運行方式與共享存儲區(qū)相似
接收者不會以等待方式讀數據
數據一致性可以保證
適用范圍:適用于需要最新數據的通信方式

如有侵權,告知必刪。