這章節將介紹:
1. TinyOS的程式編輯哲學
2. nesC 語言
4-1
TinyOS是ㄧ種為無線網路感測器而設計的作業系統。他能夠在感測器內有限的記憶體中以非常小的編碼規格做到迅速的更新與執行。TinyOS 的資料庫包含網路協議、分散式服務、感測器驅動程式, 和資料蒐集工具,所有都能視當時狀況使用或進一步被設定為習慣的使用方式。TinyOS的event-driven execution model能夠管理功率的變化在預定的範圍之中。
TinyOS不是傳統觀念的那種作業系統,他是為了各種應用而製作出來的特殊用途OS。因為這個原因,他的編碼也被設計為佔有極小空間的模式。另外TinyOS被設計成不含有文件系統, 支持唯一靜態記憶體分配, 執行單純模式的工作, 並且提供最小的設備和網路抽象概念。
TinyOS 有一個基本結構的資料處理模式(由nesC 語言編寫) 。就像其它作業系統, TinyOS 將他的軟體分級。越低級的是對硬體,越高級的是對應用。完全的TinyOS應用是ㄧ個結構圖,每部分都是獨立運作的個體。
結構上,又分為3個概念1) 命令(commands), 2) 事件(events), 和3) 任務and (tasks)。任務被用於表達內部工作,命令與事件就作為元件間溝通的工具。典型的命令意思是要求元件執行一個工作。而相較之下,事件就是傳達工作的完成。事件也會被用來表達不同地方所發出來的訊號,例如硬體的中斷或是消息的到來。命令與事件無法阻攔,但是,當要求執行一個工作時,並不是一口氣完成,而是被分為要求服務(命令)然後完成信號(對應的事件)等幾個階段。
工作並不是馬上被執行,命令與事件經過傳達之後,張貼任務,然後工作被TinyOS執行。當有其他的任務在執行時,命令或事件將會回應,他們基本的作業模式為先將任務完成(run-to-completion),而不是無期限的跑。任務代表著內部的工作與唯一存取的正式資料。TinyOS採取沒有優先權、先進先出("FIFO")的一種作業方式。
4-1.1
TinyOS 作業系統、資料庫, 和應用全部被寫在nesC,一種新被建立的語言。nesC 語言主要針對特殊系統(如感測器網路)而設計的。nesC,有著類似C語言的語法,但是支援與TinyOS相似的系統。主要的目標是讓應用設計師能夠以簡單的組成去完成,並且統一系統,然後在編譯時間中去執行龐大的校對。
4-1.2
TinyOS一 次只能執行一個工作,包括選擇的系統元件與慣用元件,只能邀情實行單一應用。在作業上有兩個相關的概念,任務與硬體事件處理。任務一但被規劃,則會完整的 跑完,誰都沒有優先執行的權利。硬體事件處理被用在回應硬體的中斷,並且也會完整的執行。與任務不同,他的處理續為優先於任務或其他的硬體事件。當命令與 事件希望被當作一部分的硬體事件執行時,那麼在發布時必須使用非同步關鍵字。
4-2
nesC是C的延伸,被設計來實現TinyOS的構造概念與執行模式。
4-2.1
元件定義二個領域, 一個為他們的規格(包含他們的接口名字),而另一個是他們的執行結果。元件中有其內部工作以任務形式表現。控制指令串經由接口進入元件之中,這些指令串將被深植在任務或硬體中斷之中。
4-2.2
接口由元件提供或使用。提供的接口表示元件提供他的功能給使用者,被使用的接口表示元件需要他的功能去執行工作。
4-2.3
接口的一端由提供者使用(commands),而另一端則是使用者使用(events).。這使一個接口能夠表達複雜的互動。這是很重要的,因為所有冗長的命令在TinyOS中都不會被阻礙,他們完成的信號經由事件被送回。藉由明確指定接口,元件將無法發送命令,除非他提供sendDone 事件的實行。典型的命令是由上往下,也就是從應用元件到相鄰元件到硬體,而事件則是由下往上。
4-2.4
元件通過他們的接口以靜態連接互相連結。這改善工作效率、促進扎實的設計、並且允許較佳的軟體靜態分析。
4-2.5
NesC的編碼以能被所有使用者編輯而設計。這允許產生或分析出更佳的編碼。
4-2.6
NesC的工作模式以完整跑完任務與一個中斷程式為基礎,中斷程式能中斷任務或其他東西。NesC編輯者以中斷程式發送可能的資料種類根據訊號。