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