TinyOS是一款自由和開源的基於組件的(component-based)嵌入式操作系統,主要針對無線傳感器網絡(WSN, wireless sensor network)開發。TinyOS使用nesC語言編寫,經由一系列合作項目得以完善。TinyOS最初是加州伯克利分校英特爾研究院為嵌入智能微塵而開發的合作項目,之後逐漸演變成一個國際合作項目,即TinyOS聯盟。

TinyOS
開發者TinyOS 聯盟
編程語言nesC
作業系統家族嵌入式操作系統
運作狀態支援中
源碼模式開放源代碼
首次發布2000年,​24年前​(2000
當前版本
  • 2.1.2 (август 2012 г.)
編輯維基數據鏈接
市場取向無線感測網路
支持的語言英語
內核類別宏內核
許可證BSD
官方網站www.tinyos.net
倉庫 編輯維基數據鏈接

內容

TinyOS中的程序使用nesC編寫,這種語言是C語言的一個分支,針對無線傳感器網絡的內存限制進行過特別的優化。相關的輔助工具則主要是由JavaShell腳本編寫的前端。其他相關的庫和工具,例如NesC編譯器和Atmel AVR二進制工具鏈則大部分用C編寫。

TinyOS程序由基於組件軟件工程建構,它們中一些表現了硬件的抽象概念, 組件用接口互相連接。TinyOS為普通的抽象描述(abstractions)提供了接口和組件,例如數據包通信(packet communication),路由,感知(sensing),行為(actuation)和儲存。

TinyOS 2.x版本後引入了完全的非阻塞式行為:它配備了一個單獨的堆棧。因此所有的持續超過幾百微秒I/O操作都以異步進行並且帶有回叫功能(callback)。為了使本地的編譯器更加出色地優化交叉調用邊界(optimize across call boundaries),TinyOS用nesC的特性,通過事件的方式去連接這些調用。非阻塞式系統可以讓TinyOS在單一存儲器下保持高度的協同性(concurrency)。它強迫程序將很多個小的事件處理例程合併成一個複合邏輯。為了支持更高的計算量,TinyOS提供了任務(tasks),其比推遲的過程調用中斷處理例程的下半部小。

一個TinyOS組件可以發布一個任務,操作系統可以把它排入列表以待之後執行。任務是沒有優先權的並且按照FIFO運行。這個簡單的協同模型滿足了以I/O為中心的應用,但對於CPU負荷重的應用程序來說是不太好的,因為它會導致向OS多次提出線程間協同處理的請求。這個問題已經導致了幾個試圖將線程合併進OS內核里的提案。

TinyOS代碼與程序代碼進行靜態連接,然後用GNU工具鏈生成系統的一整個二進制映像。