TinyOS

維基百科,自由的百科全書
跳至導覽 跳至搜尋
TinyOS
File:Tos-jwall.jpg
開發者TinyOS 聯盟
程式語言nesC
作業系統家族嵌入式作業系統
運作狀態支援中
原始碼模式開放原始碼
首次發佈2000年,​25年前​(2000
目前版本
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    市場取向無線感測網絡
    支援的語言英語
    內核類別整塊性核心
    許可證BSD
    官方網站www.tinyos.net
    倉庫
    • {{URL|example.com|可选的显示文本}}
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)

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

    內容[編輯]

    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工具鏈生成系統的一整個二進制映像。