TinyOS
此條目過於依賴第一手來源。 (2018年9月14日) |
TinyOS是一款自由和開源的基於組件的(component-based)嵌入式操作系統,主要針對無線傳感器網絡(WSN, wireless sensor network)開發。TinyOS使用nesC語言編寫,經由一系列合作項目得以完善。TinyOS最初是加州伯克利分校和英特爾研究院為嵌入智能微塵而開發的合作項目,之後逐漸演變成一個國際合作項目,即TinyOS聯盟。
開發者 | TinyOS 聯盟 |
---|---|
編程語言 | nesC |
作業系統家族 | 嵌入式操作系統 |
運作狀態 | 支援中 |
源碼模式 | 開放源代碼 |
首次發布 | 2000年 |
當前版本 |
|
市場取向 | 無線感測網路 |
支持的語言 | 英語 |
內核類別 | 宏內核 |
許可證 | BSD |
官方網站 | www |
倉庫 |
內容
TinyOS中的程序使用nesC編寫,這種語言是C語言的一個分支,針對無線傳感器網絡的內存限制進行過特別的優化。相關的輔助工具則主要是由Java和Shell腳本編寫的前端。其他相關的庫和工具,例如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工具鏈生成系統的一整個二進制映像。