覃琪 譚松鶴 何傳波
【摘 要】當(dāng)前WSNOS是一個弱硬實時操作系統(tǒng),對實時性的支持有所欠缺,從而導(dǎo)致系統(tǒng)的可信性降低。因此我們著重討論如何滿足實時任務(wù)時限要求,將其作為節(jié)點調(diào)度機(jī)制的第一目標(biāo)。由于TinyOS是專為無線傳感網(wǎng)絡(luò)設(shè)計的輕量級、低功耗的嵌入式操作系統(tǒng),在多種硬件平臺上得到應(yīng)用,具有極高的應(yīng)用價值和研究意義,本文重點圍繞TinyOS的任務(wù)調(diào)度機(jī)制進(jìn)行WSNOS可信性研究討論。
【關(guān)鍵詞】可信性;傳感網(wǎng)絡(luò);操作系統(tǒng);任務(wù)調(diào)度;優(yōu)先級;搶占
中圖分類號: TP316;TN929.5 文獻(xiàn)標(biāo)識碼: A 文章編號: 2095-2457(2019)20-0093-002
DOI:10.19694/j.cnki.issn2095-2457.2019.20.043
0 引言
當(dāng)前無線傳感網(wǎng)絡(luò)的研究35%的研究針對通信協(xié)議,16%針對能耗管理,這個方面又主要集中在定位算法、可靠性及體系結(jié)構(gòu)設(shè)計上的研究。作為高效管理和使用傳感網(wǎng)絡(luò)的手段之一的無線傳感器網(wǎng)絡(luò)操作系統(tǒng),特別是結(jié)合節(jié)點嵌入式操作系統(tǒng)的可信性研究相對較少。但其實構(gòu)建傳感網(wǎng)絡(luò)的基本軟件環(huán)境時,WSNOS(Wireless Senior Net Operating System)是支撐其他應(yīng)用軟件的基礎(chǔ),其性能的靈活、并發(fā)、高效及實時性,對傳感網(wǎng)絡(luò)有著決定性的影響,因此,WSN節(jié)點嵌入式操作系統(tǒng)可信性的研究與應(yīng)用,是個具有廣闊空間的研究發(fā)展熱點[1]。
1 節(jié)點嵌入式操作系統(tǒng)
表1 幾種操作系統(tǒng)特點比較
WSNOS相對簡易的結(jié)構(gòu)對開發(fā)人員而言難度降低了許多,但由于節(jié)點能量續(xù)航及存儲空間有限的問題,不能直接將現(xiàn)有的嵌入式操作系統(tǒng)用于WSN,必須有專用的操作系統(tǒng)。表1簡單地比較了一下幾種常見的WSNOS。
其中,美國加州大學(xué)伯克利分校開發(fā)的TinyOS,是一種開源的無線傳感器網(wǎng)絡(luò)節(jié)點專用操作系統(tǒng)。它采用事件驅(qū)動機(jī)制處理復(fù)雜網(wǎng)絡(luò)環(huán)境下節(jié)點多且頻繁并發(fā)操作的任務(wù),共享堆棧存儲空間及輕量級線程技術(shù)使得切換更為快速,在節(jié)點資源受限時能有效避免網(wǎng)絡(luò)擁堵[2]。
TinyOS結(jié)構(gòu)非常簡單,由調(diào)度器和一些組件構(gòu)成,調(diào)度器分事件(Interrupt Hander Event)和任務(wù)(task)兩級調(diào)度,第一層處理命令和事件,在硬件中斷時標(biāo)記和反饋組件狀態(tài);第二層負(fù)責(zé)各種計算任務(wù),任務(wù)在第一層工作完成后才可進(jìn)一步調(diào)度。任務(wù)實際上是種延遲計算機(jī)制,一般用在時間限制不強(qiáng)的環(huán)境[3]。程序調(diào)度過程如圖1所示。
TinyOS從下到上包括硬件抽象、系統(tǒng)和應(yīng)用三層組件。硬件抽象組件負(fù)責(zé)為上層進(jìn)行WSN硬件平臺抽象化,屏蔽一切底層硬件實現(xiàn)細(xì)節(jié);系統(tǒng)組件中,通信模塊包括傳輸層協(xié)議、路由協(xié)議、MAC 層協(xié)議和應(yīng)用層協(xié)議等各類數(shù)據(jù)傳輸協(xié)議,設(shè)備驅(qū)動模塊則由硬件通用化接口組成,傳感模塊主要負(fù)責(zé)收集數(shù)據(jù)和控制傳感設(shè)備。應(yīng)用組件是用戶自定義的需求功能模塊。
本文主要基于TinyOS來討論如何提高節(jié)點嵌入式操作系統(tǒng)可信性。
2 改進(jìn)任務(wù)調(diào)度機(jī)制的TinyOS
雖然TinyOS得到廣泛認(rèn)可并使用,但并非適用于所有場景,當(dāng)節(jié)點分布過密通信任務(wù)過多、節(jié)點發(fā)送數(shù)據(jù)過于頻繁時,甚至出現(xiàn)任務(wù)過載,從而信息丟包,傳輸吞吐量下降等等問題。另外,當(dāng)節(jié)點中斷也頻繁發(fā)生時,CPU就會忙于處理中斷而無暇執(zhí)行任何其它任務(wù),導(dǎo)致CPU空忙而過載,并且由于任務(wù)發(fā)生和處理的速率不匹配,或者同時進(jìn)行多通道采集,會增加大量本地任務(wù),在任務(wù)隊列極為有限的情況下,丟失任務(wù)也就成為常態(tài)[4]。TinyOS僅設(shè)置一個任務(wù)隊列且采用非搶占式的調(diào)度策略,無法確定何時完成任務(wù)處理,對新到達(dá)的硬實時任務(wù)完全無法響應(yīng),勢必影響了系統(tǒng)的可信性。
針對上述問題,可以對TinyOS的內(nèi)核調(diào)度機(jī)制作出一些修改,核心思想主要是將不可搶占的調(diào)度機(jī)制改為采用優(yōu)先級調(diào)度策略,以下為行之有效的幾種改進(jìn)設(shè)計。
2.1 設(shè)計新三級優(yōu)先層次調(diào)度器
基于組件的新優(yōu)先級調(diào)度器以用戶應(yīng)用程序需求為目標(biāo),通過嵌入應(yīng)用程序來更好控制任務(wù)的首次調(diào)度執(zhí)行。新調(diào)度器設(shè)置三種調(diào)度優(yōu)先級:(P1)可搶占高優(yōu)先級(P2)非可搶占高優(yōu)先級(P3)標(biāo)準(zhǔn)優(yōu)先級。
在每級優(yōu)先層次中仍按原來的FCFS進(jìn)行任務(wù)調(diào)度。所有的標(biāo)準(zhǔn)TinyOS任務(wù)都默認(rèn)放在P3標(biāo)準(zhǔn)優(yōu)先級層次隊列中,但在相鄰的優(yōu)先級層次按P1及P2調(diào)度優(yōu)先級對應(yīng)設(shè)置了兩個隊列,進(jìn)入這三層隊列的任務(wù)必須按所在隊列優(yōu)先級進(jìn)行調(diào)度,但當(dāng)前正在執(zhí)行的任務(wù)不會被搶奪執(zhí)行。高優(yōu)先級可搶占任務(wù)隊列是用來調(diào)度搶占一般任務(wù)的。任何低任務(wù)層次中正在運行的任務(wù)都可能被一個高優(yōu)先級可搶占隊列里的任務(wù)搶占執(zhí)行。并且這些層次中的任何任務(wù)可以優(yōu)先于任何一個優(yōu)先級低于自身的任務(wù)而先得到響應(yīng)。但高優(yōu)先級的任務(wù)并非需要立即執(zhí)行,而是只要在完成截止時間之前能調(diào)度完成,那么就不需要搶占執(zhí)行[5]。
另外,為了同時解決優(yōu)先級反轉(zhuǎn)及死鎖問題,還對資源訪問控制給出優(yōu)先級置頂協(xié)議(Priority Ceiling Protocol)。設(shè)該協(xié)議中每個系統(tǒng)資源都預(yù)置一個靜態(tài)置頂優(yōu)先級為P,需要訪問某資源的任務(wù)的優(yōu)先級為Po,不訪問此資源的任務(wù)的優(yōu)先級為Pb,則必須有Pb≥P≥Po。若某任務(wù)請求的資源沒有被占用,則將其Po置為P,若任務(wù)將資源釋放則恢復(fù)優(yōu)先級為Po。為預(yù)防死鎖產(chǎn)生,禁止任務(wù)在保持某個資源的同時去申請另外的資源。PCP協(xié)議被廣泛應(yīng)用于實時系統(tǒng)中,但如果任務(wù)的時限要求不能被任務(wù)調(diào)度滿足時,還要進(jìn)一步將降低上下文切換的頻率考慮進(jìn)去。
2.2 采用搶占閥值調(diào)度策略
進(jìn)一步可以使用更高級的搶占閥值調(diào)度策略?;趽屨奸撝档娜蝿?wù)調(diào)度方法[6]是一種新型實時系統(tǒng)任務(wù)調(diào)度技術(shù),只要在開始截止時限前任務(wù)得到執(zhí)行,就能大幅提升處理器響應(yīng)速度,改善WSN的可信性表現(xiàn)。
搶占閥值調(diào)度中,優(yōu)先級采用靜態(tài)賦值的辦法,并且每個任務(wù)設(shè)置搶占閥值和任務(wù)專屬優(yōu)先級,任務(wù)優(yōu)先級不能大于閥值。操作系統(tǒng)分配處理器啟動任務(wù)運行時查看任務(wù)優(yōu)先級,任務(wù)運行后則使用搶占閥值,則可使高優(yōu)先級任務(wù)搶占低優(yōu)先級任務(wù)的機(jī)會減少,上下文切換頻度降低,使處理器盡量不在此類事務(wù)上消耗。整個任務(wù)集合為能更充分被調(diào)度,劃分為組內(nèi)任務(wù)互不搶占的非搶占組(Non-Preemptive Group),這些任務(wù)能共享一個??臻g,降低任務(wù)對內(nèi)存的占用。搶占閥值調(diào)度能充分利用搶占式和非搶占式的特點,當(dāng)集合中所有任務(wù)的搶占閥值等于集合的最高優(yōu)先級時,搶占閥值調(diào)度變?yōu)榉菗屨际秸{(diào)度;當(dāng)每個任務(wù)的搶占閥值等于其優(yōu)先級時,搶占閥值調(diào)度又變成搶占式調(diào)度。
2.3 動態(tài)遞增優(yōu)先級機(jī)制
每個任務(wù)在改進(jìn)后的調(diào)度機(jī)制中聯(lián)系一個優(yōu)先級,當(dāng)前任務(wù)執(zhí)行完成后操作系統(tǒng)從任務(wù)隊列調(diào)度最高優(yōu)先級的任務(wù)執(zhí)行,若優(yōu)先級相同則按FCFS調(diào)度。優(yōu)先級值取決于兩個因素:(1)任務(wù)重要程度:負(fù)責(zé)數(shù)據(jù)采集、處理及發(fā)送的本地任務(wù)是周期性發(fā)生的,特別是做監(jiān)測數(shù)據(jù)采集時被監(jiān)測的環(huán)境通常不會發(fā)生太大變化,本地采集任務(wù)若被推遲執(zhí)行或偶然丟失,造成的影響相對較小,則賦優(yōu)先級時可相對調(diào)低。但負(fù)責(zé)發(fā)送和接受節(jié)點路由幀、轉(zhuǎn)發(fā)數(shù)據(jù)幀的網(wǎng)絡(luò)通信任務(wù),若發(fā)生丟失或阻塞會造成網(wǎng)絡(luò)斷聯(lián),無法發(fā)送及轉(zhuǎn)發(fā)數(shù)據(jù),導(dǎo)致WSN可信性降低,那么就需要調(diào)高此類任務(wù)的優(yōu)先級。(2)任務(wù)未調(diào)度前在隊列中被“插隊”的次數(shù)。低優(yōu)先級的任務(wù)如果一直保持優(yōu)先級值不變,容易屢次被高優(yōu)先級任務(wù)插隊,導(dǎo)致等待時間過長一直無法執(zhí)行。動態(tài)遞增優(yōu)先級調(diào)度機(jī)制設(shè)計中,任務(wù)每次被插隊后,系統(tǒng)給其加1,則其優(yōu)先級會在數(shù)次被“插隊”以后可以達(dá)到最高,總會得到機(jī)會調(diào)度執(zhí)行。
3 結(jié)語
作為操作系統(tǒng)的核心,WSNOS任務(wù)調(diào)度機(jī)制通過合理調(diào)度任務(wù)集合,滿足每個任務(wù)對時間和性能的要求,可以提升系統(tǒng)響應(yīng)速度和系統(tǒng)的可信性。本文從TinyOS任務(wù)調(diào)度機(jī)制的角度討論了提高無線傳感網(wǎng)絡(luò)操作系統(tǒng)可信性的幾種思想,具有切實可行的意義和價值,但限于篇幅,未能深入討論改進(jìn)的任務(wù)管理機(jī)制在能耗上的局限,將在后續(xù)的論文中進(jìn)一步研究。
【參考文獻(xiàn)】
[1]王漫,何寧,裴俊,馮改玲,劉海濤.面向無線傳感網(wǎng)絡(luò)應(yīng)用的嵌入式操作系統(tǒng)綜述[J].計算機(jī)應(yīng)用與軟件,2007,24(6):44-48.
[2]孫其博,劉杰.物聯(lián)網(wǎng):概念、架構(gòu)與關(guān)鍵技術(shù)研究綜述[J].北京郵電大學(xué)學(xué)報,2010,33(3):1-9.
[3]陳希軍.一類無線傳感器網(wǎng)絡(luò)嵌入式操作系統(tǒng)及其節(jié)點定位的關(guān)鍵技術(shù)研究[D].中國科技大學(xué)碩士論文,2009.
[4]Luis R G,Pilar B,Jose I R,et al.Testing ZigBee Motes for Monitoring Refrigerated Vegetable Transportation under Real Conditions.Sensors, 2010,10(5):4968-4982.
[5]Luis M O,Joel J R.Wireless Sensor Networks:a Survey on Environmental Monitoring.Journal of Communications,2011,6(2):143-151.
[6]賀小川,賈焰.FPTS:一種任務(wù)間存在共享資源時的搶占閾值調(diào)度算法[J].計算機(jī)研究與發(fā)展,2009,46(2):302-309.