(西北工業大學 寬帶網絡技術研究所, 陜西 西安 710072)
摘 要:無線傳感器網絡是一種全新的信息獲取和處理技術,能夠實時監測、感知和采集各種環境或監測對象的信息,而網絡節點上的嵌入式操作系統是其大多數應用的基礎。在綜合分析大量無線傳感器網絡體系結構的技術文獻和最新研究結果的基礎上,提出了無線傳感器網絡嵌入式操作系統的設計目標,對通用的多任務操作系統μC/OS-II和事件驅動的操作系統TinyOS進行了對比分析,指出TinyOS在一些應用中的局限性及拓展。
關鍵詞:無線傳感器網絡; 嵌入式操作系統; TinyOS; μC/OS-II
中圖法分類號:TP316文獻標識碼:A
文章編號:10013695(2006)08002803
Research on Node Operation System of Wireless Sensor Networks
LI Jing, WANG Fubao, DUAN Weijun,WANG Jiangang
(Institute of Broadband Network, Northwestern Polytechnical University, Xi’an Shanxi 710072, China)
Abstract:As a novel information acquirement and processing technology, Wireless Sensor Networks(WSN) can inspect, apperceive and collect the information of all kinds of environment and surveillance objects in a realtime way, and the embedded operation system which is operated in network nodes is the base of most of applications of WSN. After the analyses of the newest productions of WSN architecture, this paper brings forward the design targets of embedded operation systems of WSN, analyzes the generalpurpose multitasking OS μC/OSII and eventdriven OS TinyOS, points out the limitations of TinyOS in some applications, and the improvement schemes.
Key words:Wireless Sensor Networks; Embedded Operation System; TinyOS; μC/OS-II
1 引言
微機電系統(MicroElectroMechanism System,MEMS)、無線通信和數字電子技術的發展孕育了無線傳感器網絡(Wireless Sensor Network,WSN)[1]。WSN是一種不需要固定網絡支持,具有快速展開、抗毀性強等特點,可廣泛應用于軍事、工業、交通環保等領域,引起了人們廣泛關注[1~4]。WSN作為一個全新的研究領域,向科技工作者提出了大量的挑戰性研究課題,微型化的嵌入式操作系統就是其中之一。
無線傳感器網絡是由大量集成有傳感器和無線通信的網絡節點組成。網絡節點除了從外界環境采集數據外,還要接收鄰近節點的數據,對數據進行處理、融合、轉發。為了維護這個網絡的拓撲結構,節點間需要定期交互更新路由信息。而網絡節點的硬件能力是非常有限的,因此節點上的嵌入式操作系統必須滿足在有限的物理空間內實現對硬件的高效管理[5]。
根據實現機制可以把現有的嵌入式操作分為兩類,即Generalpurpose Multitasking OS通用的多任務操作系統和Eventdriven OS事件驅動的操作系統,前者多用于便攜式智能設備(如手機、PDA等)和工業控制中。對于支撐幾個獨立的應用運行在一個虛擬機上的并行操作是高效的,在處理過程中任務的運行和掛起很好地支撐多任務或者多線程。但是,隨著內部任務切換頻率的增加將產生非常大的開銷,典型代表如μC/OS-II[6]、嵌入式Linux、WinCE、Mantis[7]。而后者支持數據流的高效并發,并且考慮了系統的低功耗要求[8],在功耗、運行開銷等方面具有優勢,因此備受關注。典型的代表如TinyOS[5],Contiki[9]。
由于無線傳感器網絡應用的多樣性,節點的操作系統必須能夠根據內存、處理器以及能量等滿足應用的嚴格需求,也必須能夠靈活地允許多種應用同時使用系統資源,如通信、計算和存儲[8]。以下先就面向無線傳感器網絡節點的嵌入式操作系統設計目標進行討論,據此對μC/OSII和TinyOS兩種典型操作系統進行對比分析。
2無線傳感器網絡節點及其嵌入式操作系統設計目標
2.1無線傳感器網絡節點
在不同應用中,傳感器網絡節點的組成不盡相同,但一般都由數據采集單元、數據處理單元、數據存儲單元、數據傳輸單元、電源和嵌入式操作系統等部分組成[3],如圖1所示。被監測物理信號的形式決定了數據采集單元的類型;數據處理單元通常選用嵌入式CPU,負責協調節點各部分的工作,如對數據采集單元獲取的信息進行必要的處理、保存,控制數據采集單元和電源的工作模式等;數據傳輸單元主要由低功耗、短距離的無線通信模塊組成[1];電源為網絡節點提供正常工作所必需的能源;嵌入式操作系統為網絡節點提供必要的軟件支持,負責管理節點的硬件資源,對不同應用的任務進行調度與管理。在歐洲的EYES Project項目中 [10]節點使用的處理器主要是MSP430F149,而無線通信模塊則采用的是RFM公司的TR1001。美國加州大學伯克利分校開發的Motes[11]系列節點的處理器的發展是從Atmel公司的AT90LS8535到Mega128L,無線收發模塊則是采用RFM公司的TR1000到Chipcon公司的CC1000。
2.2節點嵌入式操作系統設計目標
無線傳感器網絡具有能量有限、計算能力有限、傳感器節點數量大、分布范圍廣、網絡動態性強以及網絡中的數據量大等特征[3],這就決定了網絡節點的操作系統設計應滿足如下要求:
(1)小代碼量。由于節點的內存有限,因此操作系統核心代碼量必須比較小,使其可以在有限的空間中具備高效管理硬件的能力[12]。
(2)模塊化。無線傳感器網絡設計的趨勢是針對特定的應用而并不是普遍的應用,不同的應用所需要的硬件平臺是不相同的。隨著無線傳感器網絡的廣泛應用,節點構成的變化是巨大的。在特定的硬件平臺上,根據不同的應用快速便利地結合軟件模塊實現應用是非常重要的[5]。
(3)低功耗。WSN的大多數節點采用電池供電。由于節點數量眾多以及節點被散布的環境使更換節點的電池是不可行的,甚至是不可能的,因此低功耗的操作將延長整個網絡的生命周期,是操作系統設計必須滿足的條件。
(4)并發操作性。在傳感器網絡的節點上存在著大量的并發操作,如數據采樣、數據處理、數據轉發可能同時進行。操作系統需要具備支持嚴格并發操作的能力[12]。
(5)健壯性。WSN節點數量眾多以及運行環境特殊,要求運行在單個節點上的操作系統不但健壯,而且應該便利地適應于可靠的分布式應用的發展[8]。
3μC/OS-II 與TinyOS的分析
μC/OS-II操作系統是一種性能優良、源碼公開且被廣泛應用的免費嵌入式操作系統[6]。2002年7月,μC/OS-II在一個航空項目中得到了美國聯邦航空管理局(Federal Aviation Administration)對于商用飛機的、符合RTCA DO-178B標準的認證。它是一種結構小巧、具有可剝奪實時內核的實時操作系統,內核提供任務調度與管理、時間管理、任務間同步與通信、內存管理和中斷服務等功能[13],具有可移植性、可裁減、可剝奪性、可確定性等特點[6]。
TinyOS(Tiny Micro Threading Operating System)是一個開源的嵌入式操作系統,它是由加州大學伯克利分校開發出來的,主要應用于無線傳感器網絡方面[12]。目前在世界范圍內,有超過500個研究小組或者公司正在Berkeley/Crossbow的節點上使用TinyOS[14] 。它是基于一種組件(Componentbased)的架構方式[8],能夠快速實現各種應用。TinyOS采用模塊化設計,程序核心往往很小,能夠突破傳感器存儲資源少的限制,這能夠讓其很有效地運行在無線傳感器網絡上并去執行相應的管理工作等[15]。
以下是對傳統的基于多任務的嵌入式操作系統μC/OSII和事件驅動的嵌入式操作系統TinyOS從調度策略、堆棧分配、實時性、能量消耗以及并發操作等方面的對比分析。
3.1調度策略
事件驅動的TinyOS采用兩級調度[5]:任務和硬件事件處理句柄(Hardware Event Handlers)。任務是一些可以被搶占的函數,一旦被調度,任務運行完成彼此之間不能相互搶占。硬件事件處理句柄被執行去響應硬件中斷,可以搶占任務的運行或者其他硬件事件處理句柄。TinyOS的任務調度隊列只是采用簡單的FIFO算法[8]。任務事件的調度過程如圖2所示。TinyOS的任務隊列如果為空,則進入極低功耗的Sleep模式。當被事件觸發后,在TinyOS中發出信號的事件關聯的所有任務被迅速處理。當這個事件和所有任務被處理完成,未被使用的CPU循環被置于睡眠狀態而不是積極尋找下一個活躍的事件[12]。
基于多任務的μC/OS-II采用基于優先級的調度算法,CPU總是讓處于就緒態的、優先級最高的任務運行,而且具有可剝奪型內核,使得任務級的響應時間得以優化,保證了良好的實時性[13]。其任務的切換狀態如圖3所示。在μC/OS-II中,CPU要不停地查詢就緒表中是否有就緒的高優先級任務,如果有則做任務切換,運行當前就緒的優先級最高的任務[6];否則運行優先級最低的空閑任務(Idle Task)。
從任務調度策略上,TinyOS這種事件驅動的操作系統采用的兩級調度策略、事件觸發方式的機制讓CPU在大多數時間處在極低功耗的睡眠模式。
3.2運行空間
由于多任務的系統需要進行任務切換或者中斷服務與任務間的切換。而每次切換就是保存正在運行任務的當前狀態,即CPU寄存器中的全部內容,這些內容保存在運行任務的堆棧內。入棧工作完成后,就把下一個將要運行的任務的當前狀況從任務的堆棧中重新裝入CPU的寄存器中,并開始下一個任務的運行。因此,μC/OS-II需要預先為每個任務分配堆棧空間[6]。在μC/OS-II中的任務堆棧空間可以根據任務的實際需求分配合適的大小。在事件驅動的TinyOS中,由于對任務的特殊的語義定義運行—完成(Run to Completion)[15],任務之間是不能切換的,所以任務的堆棧是共享的,并且任務堆棧總是當前正在運行的任務在使用[8]。從運行空間方面看,多任務系統需要為每個上下文切換預先分配空間,而事件驅動的執行模塊則可以運行在很小的空間中。因此多任務系統的上下文開銷要明顯高于事件系統,TinyOS更好地減少了系統對ROM的需求量,滿足了節點內存資源有限的限制。
3.3實時性與低功耗操作
基于多任務的μC/OS-II總是運行進入就緒態任務中優先級最高的任務,使用的是可剝奪型內核。這樣,最高優先級的任務何時可以執行,何時就可以得到CPU的使用權[6],實時性好。而在TinyOS中,采用的是簡單的FIFO隊列,不存在優先級的概念。
事件驅動的TinyOS,如果任務隊列為空,則進入睡眠態,直到有事件喚醒才去處理事件以及與事件相關的所有任務,然后再次進入睡眠態[8]。因而這種事件驅動的驅動系統,保證節點大多數時期都處在極低功耗的睡眠態,有效地節約了系統的能量消耗,延長了傳感器網絡的生命周期。而基于多任務的μC/OS-II實際上不考慮低功耗的應用。
3.4其他方面
μC/OS-II適合小型控制系統,最小內核可編譯至2KB[6]。一般來說TinyOS核心代碼和數據大概在400Bytes左右[5]。μC/OS-II源碼絕大部分是用移植性強的ANSI C寫的,與微處理器相關的部分是用匯編寫的[13];而TinyOS代碼則是由NesC[12]和C編寫的,底層與硬件相關部分使用了大量的宏定義。因而μC/OS-II的可移植性要好于TinyOS。μC/OS-II與TinyOS的對比總結如表1所示。
4 TinyOS的局限性與擴展
通過以上部分的比較,事件驅動的TinyOS相對于多任務的μC/OSII能夠更好地適用于無線傳感器網絡,但是它有一定的局限性。在TinyOS中對任務的操作依賴于對一個循環隊列的操作,任務隊列所能容納的最大任務數為7。而在傳感器網絡中需要處理的任務數量依賴于節點是發送原始數據給基站還是在發送到基站之前進行數據融合和處理。在前者節點將處理大量的路由任務,而在后者節點則需要為數據融合作更多的本地處理,當節點的任務量超過它的處理能力時,超負荷將會周期性地發生。在節點發送原始數據的情況下,節點的數據發送率非常高或者網絡節點分布密集也將導致高的網絡流量可能發生超負荷。而在節點發送的是融合過的數據后,本地的數據處理量非常大也將發生超負荷。節點在發生超負荷任務后,按照先后次序,后到的任務將被丟棄而不考慮任務的重要程度,也就是說FIFO調度算法對某些應用不適合。為了增強TinyOS的適用性,我們正在對TinyOS進行以下擴展,完善其調度部分及能量管理機制。
(1)TinyOS目前的調度程序是由一個單一的C文件控制執行,可以考慮將調度程序模塊化,這樣可以根據不同的應用選擇不同調度算法,如基于優先級、時間片輪轉調度等。
(2)通過在最底層增加一個事件隊列減少事件的丟失,進而增強系統的健壯性。
(3)增加全局的能量控制機制,使得微控制器可以實時監測當前電池的電壓,進而控制控制器進入相應的操作模式。
5結束語
本文闡述了適用于無線傳感器網絡的微型嵌入式操作系統的特征,并且對基于多任務的μC/OSII與事件驅動的TinyOS針對無線傳感器網絡進行了分析對比,TinyOS要比μC/OSII更適合無線傳感器網絡。但TinyOS存在一些應用的局限性,需要研究者對其進行必要的擴展。
參考文獻:
[1]任豐原,黃海寧,林闖.無線傳感器網絡[J]. 軟件學報, 2003,14(2):1148-1157.
[2]馬祖長,孫怡寧, 梅濤.無線傳感器網絡綜述[J].通訊學報,2004,25(4):114-124.
[3]李建中,李金寶,石勝飛.傳感器網絡及其數據管理的概念、問題與進展[J].軟件學報,2003,14(10):1717-1727.
[4]孫雨耕,張靜,孫永進,等.無線自組傳感器網絡[J].傳感技術學報,2004,17(2):331-335,348.
[5]Jason Hill, Robert Szewczyk, Alec Woo, et al. System Architecture Direction for Network Sensors[C].Cambridge:International Confe rence on Architectural Support for Programming Languages and Opera ting Systems, 2000.
[6]Labrosse J J. μC/OS-Ⅱ———源碼公開的實時嵌入式操作系統[M]. 邵貝貝.北京:中國電力出版社,2001.
[7]H Abrach,S Bhatti, J Carlson,et al.Mantis:System Support for Multimodel Networks of InSitu Sensors[C].Proc.of WSNA’03,2003.
[8]Jason L Hill. System Architecture for Wireless Sensor Networks[D]. Berkeley University, 2003.
[9]Adam Dunkels, Bjrn Grnvall, Thiemo Voigt. Contiki:A Lightweight and Flexible Operating System for Tiny Networked Sensors[C]. Tampa:Proceedings of the 1st IEEE Workshop on Embedded Networked Sensors, 2004.
[10]EYES Project[EB/OL]. http://eyes.eu.org,2005-04.
[11]I F Akyildiz, W Su, Y Sankarasubramaniam, et al. A Survey on Sensor Networks[J]. IEEE Communications Magazine, 2002,40(8):102-114.
[12]David Gay, Phil Levis, Rob Von Behren, et al. The NesC Language: A Holistic Approach to Networked Embedded Systems[C]. Procee dings of Programming Language Design and Implementation(PLDI), 1996.
[13]黃濤,徐宏喆,陳寧,等.嵌入式實時操作系統移植技術的分析與應用[J].計算機應用,2003,23(9):88-89,98.
[14]Mission Statement[EB/OL]. http://www.tinyos.net,2005-03.
[15]Philip Levis, Sam Madden, David Gay, et al. The Emergence of Networking Abstractions and Techniques in TinyOS[C]. Proceedings of the 1st USENIX/ACM Symposium on Networked Systems Design and Implementation, NSDI, 2004.
作者簡介:李晶(1980-),女,黑龍江人,碩士研究生,主要研究方向為傳感器網絡與分布式計算技術;王福豹(1963-),男,山西人,教授,博士,主要研究方向為計算機網絡、流媒體、傳感器網絡等;段渭軍(1962-),男,陜西人,高工,博士,主要研究方向為流媒體、無線通信等;王建剛(1974-),男,陜西人,碩士研究生,主要研究方向為傳感器網絡分布式計算與節點定位技術。
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。