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