本页使用了标题或全文手工转换

TinyOS

维基百科,自由的百科全书
跳转至: 导航搜索
TinyOS
Tos-jwall.jpg
开发者 TinyOS 联盟
编程语言 nesC
作業系統家族 嵌入式操作系统
運作狀態 支援中
源码模式 开放源代码
初始版本 2000年,​17年前​(2000
最新版本 2.1.2(2012年8月20日,​5年前​(2012-08-20
市場取向 無線感測網路
支持的语言 英语
内核类别 宏内核
许可证 BSD
官方網站 www.tinyos.net

TinyOS是一款自由和开源的基于组件(component-based)的嵌入式操作系统,主要针对无线传感器网络(WSN, wireless sensor network)开发。TinyOS使用nesC语言编写,经由一系列合作项目得以完善。TinyOS最初是加州伯克利分校英特尔研究院为嵌入智能微塵而开发的合作项目,之后逐渐演变成一个国际合作项目,即TinyOS联盟。

内容[编辑]

TinyOS中的程序使用nesC编写,这种语言是C语言的一个分支,针对无线传感器网络的内存限制进行过特别的优化。相关的辅助工具则主要是由JavaShell脚本编写的前端。其他相关的库和工具,例如NesC编译器和Atmel AVR二进制工具链则大部分用C编写。

TinyOS程序由基于组件的软件工程software component建构,它们中一些表现了硬件的抽象概念, 组件用接口互相连接。TinyOS为普通的抽象描述(abstractions)提供了接口和组件,例如数据包通信(packet communication),路由,感知(sensing),行为(actuation)和储存。

TinyOS 2.x版本后完全的non-blocking:它配备了一个单独的堆栈。因此所有的持续超过几百微秒I/O操作都以异步进行并且带有回叫功能(callback)。为了使本地的编译器更加出色地优化交叉呼叫边界(optimize across call boundaries),TinyOS用nesC的特性去连接这些回叫,叫作事件(events)。non-blocking系统可以让TinyOS在单一存储器下保持高度的协同性(concurrency)。它强迫程序用stitching together many small event handlers的方法编写复合逻辑。为了支持更高的计算量,TinyOS提供了任务(tasks),其比Deferred Procedure Call and interrupt handler bottom halves小。

一个TinyOS组建可以发布一个任务,操作系统可以把它排入列表以待之后执行。任务是没有优先权的并且按照FIFO运行。 这个简单的协同模型是典型的满足了以I/O为中心的应用,但这样的模型对于CPU负荷重的应用程序来说不是太好的,因为它会导致向OS多次提出线程间协同处理的请求(but its difficulty with CPU-heavy applications has led to several proposals for incorporating threads into the OS.)。

TinyOS代码与程序代码进行静态连接,然后用GNU toolchain。编译到一个小的二进制系统中。 它的联盟为TinyOS的应用,提供完整的开发平台。