TinyOS:一个针对无线传感器网络的自由和开源的操作系统平台
TinyOS,这款基于组件的操作系统,是针对无线传感器网络(WSN)而设计的。它是nesC程序编写的嵌入式操作系统的杰出代表,作为一系列合作项目的成果,它的起源可追溯到UC Berkeley和Intel Research合作实验室,用于嵌入智能微尘中。随着时间的推移,它逐渐发展成为一个国际合作项目,即TinyOS联盟。
TinyOS的应用程序使用nesC编写,这是一种针对感知网络内存限制问题的C语言分支。其补充工具主要来自于Java形式和shell script的front-ends。其他相关库和工具,如NesC编译器和Atmel AVRbinutils toolchains,大部分也是用C编写的。
TinyOS程序基于组件的软件工程构建,这些组件中一些是对硬件的抽象描述。组件通过接口相互连接,TinyOS提供了常见的接口和组件,如数据包通信、路由、感知、行为和存储。
在TinyOS 2.x版本之后,系统实现了完全的non-blocking模式,配备了单独的堆栈。所有的持续超过几百微秒的I/O操作都以异步方式进行,带有回调功能。为了优化交叉调用边界,TinyOS利用nesC的特性连接这些回调,称为事件。这种non-blocking系统让TinyOS在单一存储器下保持高度的协同性,迫使程序通过组合多个事件处理器来编写复合逻辑。
为了支持更高的计算量,TinyOS提供了任务(tasks),它比Deferred Procedure Call和interrupt handler bottom halves更小。一个TinyOS组件可以发布任务,操作系统会将其排入列表以待以后执行。这些任务没有优先权,按照FIFO顺序运行。虽然这个简单的协同模型非常适合以I/O为中心的应用,但对于CPU负载重的应用程序来说,可能会导致向操作系统多次提出线程间协同处理的请求。
TinyOS的代码与程序代码进行静态连接,然后使用GNU toolchain编译成一个小的二进制系统。TinyOS联盟为TinyOS的应用提供了完整的开发平台。无论是开发者还是研究人员,都可以在这个强大的平台上进行无线传感器网络的研究和开发工作。其开放源代码的特性使得任何人都可以参与到这个项目的改进和发展中来,共同推动无线传感器网络技术的进步。