鄭智健,趙 剛,孫 戰,薛建彬,郭燕波
(北方自動控制技術研究所,太原 030006)
近年來,航空領域綜合化模塊化(IMA)電子系統發展較為迅猛,綜合化模塊化航空電子系統的主要特點是使用了許多現場可更換模塊來完成各種射頻部分、信號處理和信息處理功能,這種模塊化的設計便于系統容錯和系統重構,并且為同類模塊的大量生產降低了成本。應用了IMA體系的的航空電子系統在安全可靠、應用軟件構件化、降低開發和維修成本上的優勢較之前的系統均得到了明顯的提升[1-2]。
由于火控系統的研制和服役時間長,而組件的服役時間越來越短,軟件的可擴展性越來越重要。如果能在火控系統中采用IMA體系的設計方案,將軟件按功能進行劃分,采用通用和專用的軟件模塊配置,實現系統和子系統任務功能,那將為軟件的擴展提供巨大的方便,并且綜合化模塊化的設計可以有效地避免應用軟件的多次重復開發。
本文提出通過將分時分區操作系統運用到火控系統中,使其能夠實現綜合化模塊化的體系結構的思路,對極大地降低火控系統今后的開發和維修成本和實現火控應用軟件構件化有十分重要的意義。
基于分時分區操作系統的軟件架構為縱向分層和橫向分區。縱向上分為應用層、APOS層、分區操作系統層,橫向上分為各個不同的分區。通用處理單元作為整個火控系統的信息中樞,響應系統內各模塊的輸入輸出,通用處理單元運行多個功能應用,并且一個或多個功能應用劃分對應一個分區;每個分區具有自己獨立的應用環境,由數據、上下文關系、配置屬性等組成。每個分區獨立加載各自的分區操作系統及各自的應用,分區之間互不影響,獨立運行,分區的運行要滿足時間和空間的要求。通用處理單元基于分時分區操作系統的軟件架構如圖1所示,分區之間有保護墻隔離,實際實現中通過內存管理單元(MMU)保證空間分區的空間隔離,通過嚴格的時間片輪轉方法完成時間分區調度,在分區內可以實現優先級調度或者輪轉調度策略[3-5]。
分區內的調度主要由一個用來管理上層應用和分區操作系統的應用管理接口軟件(AM)來完成,AM通過通用管理模塊(GSM)來獲取分區內各個應用的故障、上下電、時間等信息來指導各個分區的系統重構、分區資源的利用,從而有效地提高了整個火控系統的可靠性。
同時在分區運行支撐層中定義了一個分區操作系統的接口(APOS),用戶編寫應用需要面對的只是APOS,這樣減少了分區操作系統對應用的影響。而CoreOS直接對分區操作系統提供相應的服務支持,而不直接面對應用,從而解耦應用與操作系統間的依賴[6-9]。
分區內通信主要包括黑板、信號量、消息隊列、事件。黑板是一種進程之間的通信方式,對黑板來說,消息排隊是不允許的,任何寫到黑板的消息將一直保持到被清除或者被新的消息覆蓋。信號量機制用于進程間同步和互斥。消息隊列是一種進程間通信的方式。在消息隊列中,每個消息都帶有唯一的數據,因此,傳輸不允許覆蓋,允許消息隊列存儲多個消息。事件是一種通信機制,該機制允許通知等待某條件的進程條件的發生。
分區間通信主要負責分區之間的數據交換,通過虛擬網卡給各個分區分配IP和端口號,分區之間通過Socket建立通信。
KBSP位于硬件和嵌入式分時分區操作系統內核間,是針對特定目標板完成目標板硬件的初始化,使其達到可執行狀態。典型的,KBSP不包括過多的設備驅動,僅包括必需的如:定時、中斷等驅動。更多設備一般映射到相應的分區,由分區運行環境支撐層初始化。
分區調度采用基于全局調度器和分區調度器的兩級調度策略,全局調度器處于操作系統的內核中,實際運行時,操作系統內核應首先檢查分區調度時間表,以確定哪個分區將被調度,初始化運行環境,如時間片定時計數器的初始化等,然后,操作系統內核把處理器使用權交給該分區,使分區在所分配的時間片調度各應用程序。該策略對系統資源的競爭范圍進行分割,使系統資源競爭只在各個子系統范圍內存在,這樣可以有效限制多個系統功能之間的相互干擾。在該模型中,分區就是一個時間隔離保護區,把所有任務的運行時間劃分為多個時間片,分配給各個分區,每個時間片內可運行一個或多個任務。在每個時間隔離保護區結束時,處理器被強制轉交給下一個時間隔離保護區中的任務。實現時間隔離保護區的關鍵在于處理器處理能力的強制轉交,即時間隔離區的劃分及調度,以及隔離分區內任務的有效調度。
全局調度器為區間的調度規定了一種基于時間窗的循環調度算法,調度算法原理圖如圖3所示。在基于分時分區操作系統的軟件架構中,全局調度器基于時間窗循環調度各分區。CoreOS層通過一張已經確定的時間配置表,各分區在其對應的時間窗口內被激活,而時間窗一過,處理器使用權便被強制轉交,從而保證每個分區在分配給它的時間片內,分區內的各個任務不被打斷的訪問共享資源。因此,分區調度的關鍵是保證系統實時性,而保證實時性的關鍵則在于確定主時間框架和各分區時間片[10]。
假設按照安全等級及功能的不同將一個處理器模塊劃分為m個分區,每個分區稱為一個任務子系統Ak,一個分區內含有一個局部調度器Sk負責調度該分區內的所有任務。各個分區內的局部調度器共同分享處理器的資源。另假設子系統Ak中共包含n 個任務1,2,…,n,通過一個 3 元組 <Ci,Di,Ti>來表示任務i,其中,Ti是任務i的周期,Ci為任務i的最壞執行時間,Di為任務i的死限(deadline),且滿足 Ci≤Di≤Ti。
假定處理器的總的處理速率是1,局部調度器Sk的處理速率與處理器的總處理速率的比值稱為調度器的服務能力αk。即αk表示局部調度器Sk占用處理器的總處理速率的比例,因此,0<αk≤l。假設分區操作系統以周期ηk周期性地調度局部調度器Sk,則局部調度器在一個周期內可以有αk*ηk個時間單元來調度分區內的各個任務,并且有(1-ηk)*αk個時間單元是阻塞的狀態,分區的任務調度模型如圖4所示。
當局部調度器Sk使用RMS算法調度分區的各個任務時,假定Sk內的n個實時任務以優先級高低的排序為當子系統Ak中的n個任務當 t0=0 時刻被初始化時,則在[0,t](t>0)內,比任務i的優先級高或相等的任務所要求的最壞累積時間為
Lehoczky已經證明了在時間段[0,t]內,可以調度子系統Ak中的任務i的條件是W(it)≤t成立。
現在假設子系統Ak中的n個任務是在處理器能力值為αk的專用處理器上被調度而不是在能力為αk的局部調度器Sk中被調度。由于0<αk≤l,相對于處理器能力為1的處理器而言,所有任務的計算時間將變為Ci/αk。根據Lehoczky在文獻中的充要調度條件可以得出,若理器能力為αk的專用處理器調度能夠調度子系統Ak內的n個任務1,2,…,n,則存在時間
式中Wi(αk,t)表示在時間段[0,t]內且處理器的能力為αk時,優先級不小于i的任務所要求的最壞累積處理器時間。定義
由上述定義可以得出,當任務i處于可調度狀態時,Bi(αk)表示在時間段[0,Di]內處理器沒有運行任何優先級不小于i的任務的時間,在此稱Bi(αk)為時間段[0,Di]內的i級非活動周期,同時稱B0(αk)為子系統Ak中的最小非活動周期。文獻[5]已經證明了定理1:
定理1在基于兩級結構化調度模型的安全關鍵實時操作系統中,子系統Ak可被周期為ηk、服務器能力為αk的子系統服務器Sk調度的條件為:
不等式ηk-ηkαk≤B0(αk),即ηk≤B0(αk)/(1-αk)成立。
局部調度器根據各自分區內運行任務的特點,采用時間片輪轉或優先級搶占的策略來調度分區內的任務[11-12]。時間片輪轉調度是一種簡單、公平的調度算法。每個任務被分配一個時間段,稱作它的時間片,即該任務允許運行的時間,調度程序所要做的就是維護一張就緒進程列表,當進程用完它的時間片后,它被移到隊列的末尾;優先級搶占是指在任務建立的同時為每個任務賦予一個固定優先級,然后再根據任務優先級大小順序調度任務運行,高優先級的任務搶占低優先級的任務。
對于火控系統這種強實時系統,強調每個任務必須能夠在規定的截止時限內完成相應的動作,因此,在上述的基于全局調度器和局部調度器的兩級調度策略中,調度算法的選擇是保證系統實時性的關鍵[13]。
Liu和Layland在經典論文《Scheduling Algorithm for Multiprogramming in a Hard Real Time Environment》中開創了實時調度研究領域的新時代,文中提出的速率單調調度(Rate Monotonic Scheduling,RMS)被證明是最優靜態實時調度。在此之后,靜態實時調度研究領域的大量工作均以改進RMS為主。
根據安全等級和功能合理地將任務分區,在全局調度器中采用上述算法,文獻[4]中該算法已被證明能較好地滿足系統實時性的要求,同時在對于具有強實時性應用的分區內采用優先級搶占的調度策略來保證實時任務的充分運行,從而保證系統的實時性滿足火控系統的要求。
該系統較傳統系統可以實現以下功能優勢:
1)在軟件架構上,基于分時分區操作系統的軟件架構使所有業務集中于同一設備;
2)基于分時分區操作系統的軟件架構的應用標準接口,解決了應用軟件與操作系統的耦合,便于分布式異構化的軟件編程與移植;
3)應用軟件分時分區調度策略改變了傳統的基于單一操作系統的設計思想,可以實現對應用的隔離,實現各單位軟件研制的獨立性。
基于分時分區操作系統的軟件架構在火控系統中的應用將在多方面體現優勢,不僅極大地縮短了火控系統的研發周期,而且在可靠性方面,由于增加了健康監控和故障恢復的功能,也將得到極大的提高,同時,上層應用和操作系統之間的標準接口的設計提高了軟件的復用性,減少了軟件人員的工作量。隨著分時分區操作系統的進一步發展,綜合化模塊化的思路必將在火控系統中得到應用。
參考文獻:
[1]鄭宗漢.實時系統軟件基礎[M].北京:清華大學出版社,2003:1-7.
[2]劉琳.基于分層調度的實時系統容錯技術研究[D].長沙:湖南大學,2013.
[3]羅威,陽富民,龐麗萍,等.基于延遲主動副版本的分布式實時容錯調度算法[J].計算機研究與發展,2007,44(3):521-528.
[4]李昕穎,顧健,何峰,等.硬實時系統在強分區約束下的雙層分區調度[J].計算機學報,2010,33(6):1032-1039.
[5]楊仕平.分布式任務關鍵實時系統的防危(safety)技術研究[D].成都:電子科技大學,2004.
[6]王和平,王寧,張聯梅.綜合航電開放式軟件設計技術[J].計算機工程與設計,2009,30(1):4-8.
[7]馮慶.嵌入式軟件面向行業應用編程中間件技術的研究和實現[D].成都:電子科技大學,2005.
[8]袁勛,卿斯漢.安全操作系統的標識鑒別機制研究與實現[J].計算機科學,2001,28(7):120-122.
[9]晏婧.云環境下基于約束的工作流任務調度算法研究與實現[D].重慶:重慶大學,2011.
[10]DENG Z,LIU J W.Scheduling real-time applications in an open environment[J].Proceedings of the IEEE Real Time Systems Symposium,1997:308-319.
[11]段進峰,彭靖波,謝壽生,等.航空發動機分布式系統解耦控制研究[J].火力與指揮控制,2017,42(5):37-41.
[12]徐曉光,葉宏.分區間通信在航空電子系統中的設計與實現[J].航空計算技術,2005,35(1):45-46.
[13]施巍松.軟件分布式共享存儲系統的性能優化[M].北京:高等教育出版社,2004.