董艷鈴 常揚
(中國電子科技集團公司第五十四研究所河北石家莊 050081)
Vxworks嵌入式實時操作系統(tǒng)任務(wù)調(diào)度方法研究
董艷鈴 常揚
(中國電子科技集團公司第五十四研究所河北石家莊 050081)
介紹了Vxworks嵌入式實時操作系統(tǒng)內(nèi)核任務(wù)調(diào)度的4種方法,針對嵌入式實時操作系統(tǒng)多線程實時調(diào)度的應(yīng)用需求,在對Vxworks嵌入式實時操作系統(tǒng)調(diào)度原理與方法進行分析研究的基礎(chǔ)上,根據(jù)指定應(yīng)用環(huán)境的設(shè)計指標與方案,對Vxworks嵌入式實時操作系統(tǒng)系統(tǒng)任務(wù)調(diào)度方法進行了分析比較,通過仿真實驗的方式對其性能進行測試,并得出了方法適用性的相關(guān)論斷,從而為相關(guān)領(lǐng)域嵌入式實時操作系統(tǒng)的技術(shù)應(yīng)用提供參考。
嵌入式 實時 任務(wù)調(diào)度
Vxworks嵌入式操作系統(tǒng)的實時性主要建立在多任務(wù)體系與任務(wù)間通信的基礎(chǔ)上,專用通信網(wǎng)絡(luò)的實時性要求很高,在嵌入式實時操作系統(tǒng)沒有得到廣泛應(yīng)用的時期,往往采用硬件實時性分析與大規(guī)模仿真設(shè)計結(jié)合的方式進行相關(guān)工作,效率低及可操作性差。隨著以Vxworks為代表的嵌入式實時操作系統(tǒng)步入歷史舞臺,專用通信網(wǎng)絡(luò)設(shè)計方法取得了巨大的進步。隨之而來,如何完成多任務(wù)間的同步與調(diào)度就成為了一項重要的研究內(nèi)容。
Vxworks是美國風河系統(tǒng)公司推出的高性能實時操作系統(tǒng)。Vxworks是一個運行在目標機上的高性能和可裁剪的嵌入式實時操作系統(tǒng),有著良好的可靠性和卓越的實時性,被廣泛應(yīng)用于通信、軍事、航空和航天等對實時性要求嚴格的高新技術(shù)領(lǐng)域。
Vxworks是一個功能強大而且比較復(fù)雜的操作系統(tǒng),包括進程管理、存儲管理、設(shè)備管理、文件系統(tǒng)管理和網(wǎng)絡(luò)協(xié)議與系統(tǒng)應(yīng)用等。
實時操作系統(tǒng)(Real Time Operating System,RTOS)是指當外界事件或數(shù)據(jù)產(chǎn)生時,能夠接受并以足夠快的速度予以處理,其處理的結(jié)果又能在規(guī)定時間內(nèi)控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)做出快速響應(yīng),并控制所有實時任務(wù)協(xié)調(diào)一致運行的操作系統(tǒng)。因而,提供及時響應(yīng)和高可靠性是其主要特點。實時操作系統(tǒng)有硬實時和軟實時2種模式,硬實時要求在規(guī)定時間內(nèi)必須完成操作,這是在操作系統(tǒng)設(shè)計時保證的;軟實時則只是按照任務(wù)的優(yōu)先級,盡可能快的完成任務(wù)即可。在專用通信網(wǎng)絡(luò)中,必須使用硬實時操作系統(tǒng),且要求操作系統(tǒng)必須具備以下特點:①多任務(wù);②有線程優(yōu)先級;③多種中斷級別[1]。
Vxworks操作系統(tǒng)滿足以上實時性設(shè)計需求,其只占用很小的存儲空間,并可以高度裁剪,保證了系統(tǒng)能以較高的效率運行。
多任務(wù)提供一種機制,用于響應(yīng)多重和離散事件,多任務(wù)構(gòu)造出多線程并發(fā)執(zhí)行的表象,但實際上系統(tǒng)內(nèi)核是根據(jù)某種調(diào)度算法交錯執(zhí)行。每個任務(wù)擁有各自的上下文,即擁有各自的CPU環(huán)境和系統(tǒng)資源,在上下文切換時,任務(wù)的上下文保存在任務(wù)控制塊(Task Control Block,TCB)中。Vxworks任務(wù)狀態(tài)轉(zhuǎn)換圖如圖1所示。
Vxworks操作系統(tǒng)作為當前最為優(yōu)秀的嵌入式實時操作系統(tǒng),其多任務(wù)環(huán)境允許將實時應(yīng)用構(gòu)建成一組獨立的任務(wù),每個任務(wù)擁有各自的線程與一套系統(tǒng)資源[2]。為了協(xié)調(diào)任務(wù)間的行為,任務(wù)間通信設(shè)備允許通過同步和通信操作協(xié)調(diào)各自的活動。
表1 任務(wù)狀態(tài)符號
若應(yīng)用程序調(diào)用了內(nèi)核程序,任務(wù)將從一個狀態(tài)改變到另一個狀態(tài)。圖1描述了任務(wù)創(chuàng)建時處于掛起狀態(tài),必須激活一個創(chuàng)建的任務(wù)才能是其處于就緒狀態(tài),運行過程中的狀態(tài)會根據(jù)任務(wù)所處的不同階段而不斷跳轉(zhuǎn)。在操作系統(tǒng)里內(nèi)核負責維護每個任務(wù)的當前狀態(tài)。Vxworks操作系統(tǒng)的幾種主要任務(wù)狀態(tài)如表1所示[3]。
基于Vxworks實時操作系統(tǒng)的任務(wù)調(diào)度方法的研究是多任務(wù)設(shè)計的核心問題。根據(jù)應(yīng)用環(huán)境需求,任務(wù)調(diào)度方法以任務(wù)優(yōu)先級為依據(jù),同優(yōu)先級任務(wù)實時性調(diào)度方法分為4種:①輪轉(zhuǎn)調(diào)度;②信號量調(diào)度與同步;③DELAY延時方法;④API阻塞方法[4]。
4.1 輪轉(zhuǎn)調(diào)度
當所有任務(wù)都處于就緒狀態(tài)時,輪轉(zhuǎn)調(diào)度算法傾向于平均使用CPU,其基本原理是對于所有同優(yōu)先級任務(wù)通過時間片獲得相同的CPU處理時間。在Vxworks內(nèi)核運行環(huán)境下,可以使用kernelTimeSlice函數(shù)啟動輪轉(zhuǎn)調(diào)度算法,以時間片長度或時間間隔為參數(shù)[5]。
在大多數(shù)系統(tǒng)狀態(tài)下,并不一定需要使用輪轉(zhuǎn)調(diào)度算法,但在相同代碼被多份復(fù)制執(zhí)行時,例如在用戶接口任務(wù)內(nèi)執(zhí)行時,則需要使用輪轉(zhuǎn)調(diào)度算法。
4.2 信號量調(diào)度與同步
Vxworks系統(tǒng)中,多任務(wù)對應(yīng)多線程,每一個人任務(wù)啟動一個或者多個線程來完成預(yù)定功能。對多個線程進行調(diào)度,尤其是不同優(yōu)先級的線程之間進行調(diào)度,最為便捷有效的方法是線程間通信,可以使用通常意義下的信號量,利用信號量的阻塞特性來實現(xiàn)線程互斥與同步。
在Vxworks操作系統(tǒng)中,信號量被高度優(yōu)化,并提供了最快的任務(wù)間通信機制。信號量是互斥與任務(wù)同步的最主要手段[6]。
4.3 DELAY延時方法
Vxworks提供了任務(wù)延時接口TaskDelay,TaskDelay以時間片為參數(shù),用于任務(wù)運行過程中的時序控制[7]。TaskDelay有一個十分有用的特性,即當參數(shù)為0時,系統(tǒng)默認線程立即釋放資源控制權(quán),內(nèi)核將資源賦予當前處于就緒狀態(tài)的等待線程。利用這一特性,可以將每一個設(shè)計為執(zhí)行完畢即釋放的運行模式,從而達到線程調(diào)度的目標。
這一方案的缺點是TaskDelay(0)的執(zhí)行依賴于線程函數(shù)的執(zhí)行流程,換句話說,需要執(zhí)行到這條代碼的時候才能釋放資源。因此,同優(yōu)先級的線程執(zhí)行順序和時間間隔是隨代碼效率不同而不同,不適合精確控制方案[8]。
4.4 API阻塞方法
專網(wǎng)通信系統(tǒng)的設(shè)備驅(qū)動程序,包括某些系統(tǒng)通用函數(shù)(如MsgQ類)是阻塞式執(zhí)行的,也就是說,當對設(shè)備進行操作時,如設(shè)備當前無法響應(yīng),則線程阻塞到這個執(zhí)行點上,等待設(shè)備就緒。利用這一特性,可以起到與信號量調(diào)度異曲同工的目的[9]。
根據(jù)上節(jié)分析,4種任務(wù)調(diào)度方法各有優(yōu)劣,采用半實物仿真的方式從不同角度對調(diào)度方法的性能進行測試分析,如表2所示。
表2 仿真環(huán)境參數(shù)
仿真方法:本次仿真的任務(wù)目標是測試任務(wù)調(diào)度方法的適用環(huán)境,通過多路高速數(shù)據(jù)輸入,相關(guān)任務(wù)對輸入數(shù)據(jù)進行采集、解析和轉(zhuǎn)發(fā),統(tǒng)計丟包率可以通過對各個任務(wù)的處理狀況的分析得到任務(wù)調(diào)度的適用度。
仿真結(jié)果如下:4路2 Mbps數(shù)據(jù)輸入,4個線程分別對數(shù)據(jù)進行采集、幀解析和統(tǒng)計,采集時間為100 min,獲取實驗結(jié)果統(tǒng)計如圖2所示。
圖2 4路低速輸入丟包率統(tǒng)計
在2 Mbps低速數(shù)據(jù)輸入的條件下,線程開銷較小,因此,4種調(diào)度方案均取得較好的實驗數(shù)據(jù),丟包率均小于0.01‰。4路64 Mbps數(shù)據(jù)輸入,12個線程分別對數(shù)據(jù)進行采集、幀解析和統(tǒng)計,采集時間為100 min,獲取實驗結(jié)果統(tǒng)計如圖3所示。
圖3 4路高速輸入丟包率統(tǒng)計
在64 Mbps高速數(shù)據(jù)輸入的條件下,4種調(diào)度方案線程開銷差異較大,根據(jù)實驗數(shù)據(jù),輪轉(zhuǎn)調(diào)度開銷最大,丟包率穩(wěn)定在0.1‰,信號量互斥方法開銷最小,丟包率穩(wěn)定在0.001‰,延時調(diào)度的開銷不穩(wěn)定,丟包率在0.001‰-0.1%之間波動,而API調(diào)度方法在這里采用的是總線阻塞的方式,由于總線能力限制,丟包率也不是很穩(wěn)定,總體位于0.005‰水平線下。4路64 Mbps數(shù)據(jù)輸入,分別用4、8、16和32個線程分別對數(shù)據(jù)進行采集、幀解析和統(tǒng)計,采集時間為100 min,獲取實驗結(jié)果統(tǒng)計如圖4所示。
圖4 線程數(shù)改變條件下的丟包率統(tǒng)計
當操作數(shù)據(jù)源的線程數(shù)量不斷增加,4種調(diào)度方法丟包率均有所變化,符合調(diào)度原理。輪轉(zhuǎn)調(diào)度算法隨著競爭線程數(shù)的增加性能下降的最為明顯,延時調(diào)度算法的丟包率由0.05‰上升至0.16‰,而信號量與API調(diào)度方法的性能變化不大,均上升了0.002‰。
通過以上仿真,得出如下結(jié)論:當系統(tǒng)載荷數(shù)據(jù)較小且線程數(shù)較少的條件下,4種調(diào)度算法的性能差異并不明顯;載荷數(shù)據(jù)或競爭線程數(shù)增加會導(dǎo)致輪轉(zhuǎn)調(diào)度和延時調(diào)度的性能下降,互斥信號量和以其為基礎(chǔ)的API調(diào)度方式性能較好。因此,在高載荷的大系統(tǒng)中應(yīng)使用基于互斥信號量的任務(wù)調(diào)度方法。
[1]XIANG Zheng,REN Peng.A Multitask Scheduling Algorithm for Vxworks:Design and Task Simulation[C].Shanghai:AICI, 2009.
[2]王金剛,高偉,蘇琪,等.Vxworks程序員指南[M].北京:清華大學(xué)出版社,2003.
[3]周俊杰,何攀峰.基于Vxworks的實時多任務(wù)軟件框架設(shè)計[J].國外電子測量技術(shù),2012(4):80-82.
[4]閆得杰.基于Vxworks的多任務(wù)程序設(shè)計及通信管理[J].光機電信息,2010,27(9):64-68.
[5]李洪亮,侯朝幀,周紹生.Vxworks下實時多任務(wù)程序的實現(xiàn)[J].信息技術(shù),2009(25):24-25.
[6]曹慶年,張金森,孟開元.Vxworks多任務(wù)調(diào)度策略的研究[J].中國科技信息,2008(8):124-125.
[7]李強.嵌入式軟件實時性測試過程研究[J].計算機與網(wǎng)絡(luò),2007,33(18):38-39.
[8]李海清,張銳.基于PowerPC嵌入式網(wǎng)絡(luò)通信平臺的實現(xiàn)[J].計算機與網(wǎng)絡(luò),2010,36(12):39-41.
[9]梁科,徐鉑韜,趙研.基于片上PowerPC的Vxworks處理平臺設(shè)計[J].無線電工程,2008,38(12):62-64.
Research on Task Scheduling Algorithm in VxWorks Embedded Real-time Operating System
DONG Yan-ling CHANG Yang
(The 54th Research Institute of CETC,Shijiazhuang Hebei 050081,China)
The four methods of kernel task scheduling in VxWorks embedded real-time operating system(RTOS)are introduced.Aiming at the application requirements of multithread real-time scheduling in VxWorks embedded RTOS,based on the analysis and research of scheduling theories and methods of VxWorks RTOS,the four system task scheduling methods in VxWorks embedded RTOS are analyzed and compared according to the design criteria and plans in required application environments.their performance are tested through simulation experiments,and the relevant conclusions of method applicability are obtained,which provide the references for technology?application in embedded RTOS field.
embedded;real-time;task scheduling
TP316
A
1008-1739(2014)10-55-4
定稿日期:2014-04-26