覃琪 譚松鶴 何傳波


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