随着无线传感器网络的发展,目前已经出现了好几种应用于无线传感器网络的操作系统,下面介绍几种主要的无线传感器网络操作系统。
1.TinyOS
TinyOS是加州大学伯克利分校的David Culler领导的研究小组为无线传感器网络量身订制的嵌入式操作系统。TinyOS目前已经成为无线传感器网络领域事实上的标准平台。尽管有不少无线传感器网络研究小组开发了各具特点的硬件节点,但绝大多数都采用了TinyOS。TinyOS的源代码是对外公开的,目前已不再由加州大学伯克利分校的开发小组单独开发和升级,而成为SourceForge.net(全球最大的开源软件开发平台和仓库)的一个开放的项目,由众多研究小组共同开发和维护。为了方便讨论和吸收各方面的意见,又成立了TinyOS联盟,共同讨论和制订TinyOS的发展规划。
目前,TinyOS的最新版本是2.1.1,此版本可以在很多硬件平台上运行。TinyOS在实际项目中得到了广泛的应用,其官方网站上列出了数十个采用了TinyOS的项目,而且这些数据还在不断地更新中。例如,加州大学洛杉矶分校的Shahin Farshchi进行了一项以TinyOS为基础的无线神经界面研究,该系统可以在100Hz/频道的采样频率下传感、放大、传输神经信号;路易斯安那州立大学和位于Baton Rouge的南方大学的Nian-Feng Tzeng博士研究了应用于石油/气体开发和管理的UcoMS(泛计算和监控系统),用于帮助钻孔、记录操作数据、监控设备、管道管理等;香港科技大学的刘云浩等人在用于森林生态监测的“绿野千传”项目中布置了上千节点的大规模网络,长期收集温度、湿度、光照和二氧化碳浓度等多种生态信息。
2.TI公司的ZStack OKAL操作系统
TI公司于2007年推出了第一款免费的协议栈软件,即TI公司的ZStack OKAL操作系统(协议栈)。该系统功能完全,支持所有拓扑结构,从而使得构建ZigBee网络的成本大大降低,TI公司也成为被选择最多的ZigBee解决方案提供商。虽然TI公司宣传ZStack属于开源软件,但其实并没有提供全部的源代码,其从网络层的部分实现开始,以及往下的几层网络相关协议层,都只提供了接口与库文件。鉴于本章将详细介绍,在此不再赘述。
3.MANTIS操作系统
MANTISOS(MultimodAl NeTworks of In-situ SensorsOS,MOS)是由美国科罗拉多大学MANTIS项目组为无线传感器网络开发的源代码公开的多线程操作系统。它的内核和API采用标准C语言,提供了人们所熟悉的类Unix的编程环境,易于用户入门和应用。虽然MOS是基于多线程的系统,但它的整个内核占用的RAM小于500B,对Flash的需求小于14KB。而且它提供了多线程抢占机制,能很好地满足无线传感器网络中处理复杂任务(例如加密解密、数据融合、定位、时间同步等)的需要。同时,其抢占式的任务调度器采用节点循环休眠策略,可以大大提高能量利用效率。目前,MOS最新版本为0.9.5,可支持Mica系列(Mica2、MicaZ等)的节点和MANTIS项目组研发的namph节点。
MOS是经典的分层式多线程结构,如图4-1所示,包括内核/调度器、通信层(COMM)、设备驱动层、网络栈以及命令服务器。应用程序线程和底层操作系统API相互独立,所以MOS通过提供不同平台的API可以实现对多个平台的支持。
图4-1 MOS系统架构
MOS使用了一个类似于Unix风格的调度器,它提供了基于优先级的多线程调度和在同一优先级中进行轮转调度的服务。通信层为通信设备的驱动程序定义了统一接口,如串口、无线通信设备等,它实现了异步的I/O操作。设备驱动层涵盖了同步I/O设备的驱动程序(如传感器、外部存储器等)和异步通信设备的驱动程序(如无线电、串口等)。MOS还提供了标准的接口来控制外部设备的能量状态,支持3种不同的能量状态:开启、关闭和空闲。微处理器的能量管理与线程调度紧密结合,且支持两个级别的节能。
由于MOS的内核和API采用统一的C语言接口,所以不仅能够通过快速的应用原型大大缩短开发周期,而且能够对MOS内核的添加或者修改进行快速测试与调试。此外,还为传感器网络更高级的研究提供可扩展性,包括无线方式的动态重编程、传感器节点远程调试以及多态原型(包括虚拟的和实际部署的传感器节点)。
MOS也有一些成功的实际应用——一个应用了MOS的火灾探测网络(FireWxNet)项目曾获得了国际移动系统会议(MobiSys 2006)的最佳论文奖。这个传感器网络部署在美国爱达荷州的比特鲁特国家森林公园,由3个采用MOS的子网络组成,并且由一个IEEE 802.11主干网支撑起来。在一系列严格的测试条件下,MOS的各个部分,包括内核、网络、任务循环以及应用支持能力等各方面都运行得很好。(www.daowen.com)
4.SOS
SOS是由加州大学洛杉矶分校的网络和嵌入式实验室(NESL)为无线传感器网络开发的操作系统。SOS与TinyOS一样,也是一个事件驱动的操作系统。它使用了一个通用内核,可以实现消息传递、动态内存管理、模块装载和卸载以及其他的一些服务功能。其最大的特点就是能够动态地装载软件模块,因此它可以创建一个支持动态添加、修改和删除功能模块的系统。
SOS由可以动态加载的模块和静态的系统内核组成。静态内核可以先被烧录到节点上,节点运行过程中用户还可以根据任务的需要动态地增删模块。静态内核实现了最基本的服务,包括底层硬件抽象、灵活的优先级消息调度器、动态内存分配等功能。其中简单的动态内存分配机制,减小了编程复杂度,并增加了内存的重用度。模块实现了系统大多数的功能,包括驱动程序、协议和应用程序等。这些模块本身都是独立的代码实体,实现一项具体的任务和功能,并且对模块的修改不会中断系统的操作。
SOS采用标准C语言编写,因此可以使用标准C语言的调试工具,如gdb等。SOS采用真正的模块化开发方式,大部分应用的开发都是基于模块,应用模块在网络被部署后仍然保持着模块化的特性。目前,SOS的最新版本为2.0.1,其支持的硬件平台主要有Crossbow公司的Mica2、MicaZ节点以及耶鲁大学的XYZ节点。SOS系统架构如图4-2所示。
图4-2 SOS系统架构
5.Contiki操作系统
Contiki是瑞典计算机科学研究所的Adam Dunkels等人专为内存资源非常有限的嵌入式系统(如传感器节点)开发的一个多任务操作系统。Contiki完全采用C语言编写,源代码开放,支持网络互联,具有高度的可移植性,代码量非常小,支持8位微控制器构成的嵌入式系统,也支持老式的8位家用台式计算机。自从2003年5月推出以来,Contiki已经被移植到了20种不同类型的硬件平台。目前,Contiki的最新版本为2.5。
Contiki提供一个简单的事件驱动内核,支持原型进程以及可选的抢占式多任务,通过传递消息来实现任务间通信,具有动态进程结构,支持加载和卸载程序。使用uIP协议栈实现本地TCP/IP协议,可以在直接相连的终端和通过网络相连的终端(如虚拟网络计算机和Telnet)上实现图形化界面系统。
当前,Contiki基本系统(支持多任务、网络和图形界面)在编译后的代码大小为32KB,而一个较为完整地支持Web服务器、Web浏览器等功能的系统在编译后代码大小约为64KB。目前,能够运行Contiki的最小系统只需要一个2KB的RAM,以这一个RAM能运行基本系统、Web服务器、虚拟网络计算机服务器和一个小的虚拟桌面。
6.MagnetOS
MagnetOS是由康奈尔大学为无线自组织网络开发的分布式操作系统,其目标是为自组织网络提供一个能量高效、自适应性强并且便于应用开发的操作系统。MagnetOS最大的特点是采用了虚拟机的思想,针对各种节点构成的自组织网络,提供了一个统一的Java虚拟机系统映像。MagnetOS能够自动地将应用程序分割成各种组件,并且以利于节能、延长网络寿命的方式将这些组件自动放置或迁移到最合适的节点上。目前,MagnetOS可运行在x86笔记本电脑和StrongARMD的PDA上,如iPAQ、Axim等。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。