TinyOS無線傳感器網(wǎng)絡操作系統(tǒng)
TinyOS是一款自由和開源的基于元件(component-based)的操作系統(tǒng)和平臺,它主要針對無線傳感器網(wǎng)絡(WSN, wireless sensor network)。TinyOS是用nesC程序編寫的嵌入式操作系統(tǒng),其作為一系列合作項目的結果。 它的首先出現(xiàn)是做為UC Berkeley和Intel Research合作實驗室的杰作,用來嵌入智能微塵當中,之后慢慢演變成一個國際合作項目,即TinyOS聯(lián)盟。
TinyOS應用程序是用nesC編寫,它是C programming language的一個分支對于感知網(wǎng)絡的內(nèi)存限制問題作了優(yōu)化。它的補充工具主要來自于Java形式和shell script的front-ends。其他的相關的庫和工具,例如NesC編譯器和Atmel AVRbinutils toolchains,大部分用C編寫。
TinyOS程序由基于組件的軟件工程software component建構,它們中一些表現(xiàn)了硬件的抽象概念, 組件用接口互相連接。TinyOS為普通的抽象描述(abstractions)提供了接口和組件,例如數(shù)據(jù)包通信(packet communication),路由,感知(sensing),行為(actuation)和儲存。
TinyOS完全的non-blocking:它配備了一個單獨的堆棧。因此所有的持續(xù)超過幾百微秒I/O操作都以異步進行并且?guī)в谢亟泄δ埽╟allback)。為了使本地的編譯器更加出色地優(yōu)化交叉呼叫邊界(optimize across call boundaries),TinyOS用nesC的特性去連接這些回叫,叫作事件(events)。non-blocking系統(tǒng)可以讓TinyOS在單一存儲器下保持高度的協(xié)同性(concurrency)。它強迫程序用stitching together many small event handlers的方法編寫復合邏輯。為了支持更高的計算量,TinyOS提供了任務(tasks),其比Deferred Procedure Call and interrupt handler bottom halves小。
一個TinyOS組建可以發(fā)布一個任務,操作系統(tǒng)可以把它排入列表以待之后執(zhí)行。任務是沒有優(yōu)先權的并且按照FIFO運行。 這個簡單的協(xié)同模型是典型的滿足了以I/O為中心的應用,但這樣的模型對于CPU負荷重的應用程序來說不是太好的,因為它會導致向OS多次提出線程間協(xié)同處理的請求(but its difficulty with CPU-heavy applications has led to several proposals for incorporating threads into the OS.)。
TinyOS代碼與程序代碼進行靜態(tài)連接,然后用GNU toolchain。編譯到一個小的二進制系統(tǒng)中。 它的聯(lián)盟為TinyOS的應用,提供完整的開發(fā)平臺。
