TinyOS本身在软件结构上就体现了一些已有的研究成果,如组件化编程方式(compo-nent-based programming)、事件驱动(event driven)模式、轻量级线程(light weight thread)技术、主动消息(active message)通信技术等。这些研究成果最初并不是用于面向传感器网络的操作系统的,例如,轻量级线程和主动消息主要用于并行计算中的高性能通信。但经过对传感器网络应用系统的深入研究后发现,上述技术有助于提高传感器网络的性能,在发挥硬件功能的同时能降低其功耗,并且简化了应用程序的开发。
TinyOS的技术优势主要体现在以下四个方面。
(1)组件化编程
无线传感器网络既具有多样化的上层应用,又强调系统的节能性要求。为此,TinyOS采用一种基于组件的体系结构,这种体系结构已经被广泛应用在嵌入式操作系统中。组件就是对软、硬件进行功能抽象。整个系统由组件构成,通过组件提高软件重用度和兼容性,程序员只需要关心组件的功能接口和自己的业务逻辑,而不必关心组件的具体实现,从而能够提高编程效率,快速实现各种应用。
同时,TinyOS程序采用的是模块化设计,只包含必要的组件,提高了操作系统的紧凑性。这样既便于上层应用的开发,也有利于程序的快速执行。这样设计的程序内核往往都很小,其内核代码和数据约为400B,能够突破传感器存储资源少的限制,使得TinyOS可以有效地运行在无线传感器网络节点上,并负责执行相应的管理工作。
(2)事件驱动机制
针对无线传感器网络内节点众多,以及并发操作频繁的工作方式,TinyOS采用了事件驱动的运行机制。TinyOS的应用程序都基于事件驱动模式,通过触发事件来唤醒传感器工作。事件相当于不同组件之间传递状态信息的信号。当事件对应的硬件中断发生时,系统能够快速地调用相关的事件处理程序,迅速响应外部事件,并且执行相应的操作任务。因此,事件可称为中断处理线程,常用于时间要求很严格的应用中。
TinyOS中程序的运行是由一个个事件驱动。数据包收发、传感器采样等操作引发的硬件中断会触发底层组件中的事件处理程序,对该中断作初步处理后再触发上层组件的事件,通知上层组件对该事件作进一步处理。事件驱动机制可以使CPU在事件产生时迅速执行相关任务,并在处理完成后进入休眠状态,有效地提高了CPU的使用率,并达到节能的目的。(www.daowen.com)
(3)轻量级线程技术及两层调度方式
TinyOS提供任务和硬件事件处理两级调度体系。轻量级线程,即任务,用在对于时间要求不是很高的应用中。任务之间是平等的,不能相互抢占,按先入先出(First Input First Output,FIFO)进行调度。轻量级线程是针对节点并发操作可能比较频繁,且线程比较短的问题提出的。由于传感器节点的硬件资源有限,短流程的并发任务可能频繁执行,传统的进程或线程调度算法会在无效的进程切换过程中产生大量能耗,故无法应用于传感器网络的操作系统。轻量级线程技术和基于FIFO的任务队列调度方法,能够使短流程的并发任务共享堆栈存储空间,并且快速地进行切换,从而使TinyOS适用于并发任务频繁发生的传感器网络应用。当任务队列为空时,CPU进入休眠状态,外围器件处于工作状态,任何外部中断都能唤醒CPU,这样可以节省能量。而硬件事件处理线程,即中断处理线程,可以打断用户的轻量级线程和低优先级的中断处理线程,对硬件中断进行快速响应。
(4)基于事件驱动模式的主动消息通信方式
每一个消息都维护一个应用层的处理程序。当目标节点收到这个消息后,就会把消息中的数据作为参数,并传递给应用层的处理程序,由其完成消息数据的解析、计算处理或发送响应消息等工作。
这种通信方式已经广泛应用于分布式并行计算。主动消息是并行计算机中的概念。在发送消息的同时,传送处理这个消息的相应处理函数和处理数据,接收方得到消息后可立即进行处理,从而减少通信量。由于传感器网络的规模可能非常大,导致通信的并行程度很高,传统的通信方式无法适应这样的环境。TinyOS的系统组件可以快速地响应主动消息通信方式传来的驱动事件,有效提高CPU的使用率。
以上这些技术都是为了保证操作系统满足无线传感器网络的特殊要求,使其在处理能力和存储能力有限的情况下具有更强的网络处理和资源收集能力。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。