无线感测器网路作业系统


无线感测器网路作业系统

文章插图
无线感测器网路作业系统【无线感测器网路作业系统】WSN作为综合了感测器、嵌入式计算、及无线通信等3大技术的新兴领域,可以实现人与自然物以及物与物对话的无处不在的通讯和计算 。从火星探测到野生候鸟的监测,从智慧型房屋到车辆监测和跟蹤,从军事“智慧型尘埃”(Smart Dust)到辅助足球裁判,从胶囊肠镜到住院病人病情监控,从森林防火到预测山洪暴发,从人体内药物剂量控制到精细农业……,广阔的套用前景掀起了国内外对WSN的研究热潮 。
基本介绍中文名:无线感测器网路作业系统
性质:网路作业系统
WSN:掀起了一场后PC时代的革命
绪论近几年来,无线感测器网路(WSN)掀起了一场后PC时代的革命 。综合各种套用,WSN有自己的许多特点 。首先,WSN是一种嵌入式系统,提供分布处理,动态和适应性;其次,它由以通讯为中心的大数量的小型和微型数据採集设备构成,其主要特徵为灵活、自组织、严格资源限制,并且需要实时处理同长时间的单任务串列处理并存,同时大部分时间保持低功耗状态 。2 WSN作业系统(WSNOS)俗话说:“万丈高楼平地起,一力承担靠地基”,WSN的作业系统(WSNOS)是WSN系统的基本软体环境,是许许多多的WSN套用软体开发的基础 。WSNOS不是特定的系统/用户界面,也不是特定的一系列系统服务,而是定义了一套通用的界面框架,允许应用程式选择服务和实现;它提供框架的模组化,以便适应硬体的多样性,同时允许应用程式重用通用的软体服务和抽象 。同其他作业系统一样,WSNOS是为了方便开发套用,提供物理设备的抽象和高协调性的通用函式实现 。它的独特性在于,资源极端受限(处理器速度、存储器大小、记忆体大小、通讯频宽、资源数量以及电源受限),设备特殊性和缺乏一致的抽象层次 。因此,WSNOS的设计策略必须是一个资源库,从中抽取一部分组成套用 。它致力于提供有限资源的并发,而不是提供接口或形式 。伯克利开发的TinyOS正是这样一套WSNOS系统 。3 WSN需求和趋势1)工厂真正实现电子信息化需要WSN实地採集数据和监控 。文献中谈到了WSN套用于工厂自动化生产线的问题 。传统的有线感测只能用在布线容易的短距离空间,而对很多长距离的监控则无能为力 。例如,输油管道的监控,需要在输油管道上散布很多感测器,并且互相之间要互通信息 。而以往的感测器需要布线,同时感测器之间不能互相通信,阻碍了这种套用 。但是,这种无线监控最大的困难是它不如有线感测器可靠 。2)WSN为城市监控,野外监控提供了技术手段 。用于监控生态环境、农作物生长环境、城市交通监控、大楼监控等 。大量的WSN节点的冗余可提高可靠性,但是它们需要长时间处于不维护状态,因此电池的寿命就成了这种套用的瓶颈 。3)WSN也可用于特殊物品监测,例如:胎压监测、灭火器监测、危险物品监测等 。这些对物品的监测也必须要求很高的可靠性,而且要求低功耗以使其可以维持工作到所需的时间 。4)在军事上,WSN也为现代化的先进武器系统提供了新的技术基础 。例如:地雷上装上WSN节点,可以与士兵身上的WSN节点通讯,识别敌我,而有选择性地爆炸 。这种节点涉及到人的生命安全,其可靠性的要求极高,同时也必须在足够时间内维持工作 。总之,这种套用前景关注去掉“两线”数据线和电源线的无线技术,前者随着RF射频硬体技术的发展而出现,后者随着低功耗的处理器,低功耗的收发器以及低功耗的感测器等低功耗硬体的发展以及电池技术的发展而得以实现 。然而,去掉数据线使得通讯变得不那幺可靠;去掉电源线使得供电时间的维持成为一个挑战 。因此,可靠性和低功耗已经成为了这种技术推广的瓶颈 。从WSN作业系统软体的角度着手解决可靠性和低功耗的问题分析 。首先,与一般的嵌入式系统(如PDA,手机等)不同,WSN的资源更加受限,迫切需要系统软体的精心设计,才能满足可靠性的需求;其次,电池技术的发展并不足以满足很长时间不维护的需求,而硬体也需要系统软体的管理才能充分发挥其低功耗特性 。这就需要系统软体採用最大限度降低运算功耗和通讯功耗的策略 。WSNOS框架WSNOS的总体框架 。物理层硬体为框架的最底层,感测器、收发器以及时钟等硬体能触发事件的发生,交由上层处理 。相对下层的组件也能触发事件交由上层处理 。而上层会发出命令给下层处理 。为了协调各个组件任务的有序处理,需要作业系统採取一定的调度机制 。WSNOS组件的具体内容,包括一组命令处理函式,一组事件处理函式,一组任务集合和一个描述状态信息和固定数据结构的框架 。除了WSNOS提供的处理器初始化、系统调度和C运行时库(C Run-Time)3个组件是必需的以外,每个应用程式可以非常灵活地使用任何WSNOS组件 。这种面向组件的系统框架的优点是:首先,“事件-命令-任务”的组件模型可以禁止低层细节,有利于程式设计师更方便地编写应用程式;其次,“命令-事件”的双向信息控制机制,使得系统的实现更加灵活;再次,调度机制独立成单独的一块,有利于为了满足不同调度需求进行的修改和升级 。WSNOS核心由于WSNOS的特殊性,它的调度机制需要简单而实用 。下面以TinyOS为例,介绍WSNOS的调度机制 。1.1 调度TinyOS的调度模型为任务加事件的两级调度,调度的方式是任务不抢占事件要抢占,调度的算法是简单的FIFO,任务伫列是功耗敏感的 。调度模型有以下的特点:a) 基本的任务单执行绪运行到结束,只分配单个任务栈,这对记忆体受限的系统很重要 。b) FIFO的任务调度策略是电源敏感的 。当任务伫列为空,处理器休眠,等待事件发生来触发调度 。c) 两级的调度结构可以实现优先执行少量同事件相关的处理,同时打断长时间运行的任务 。d) 基于事件的调度策略,只需少量空间就可获得并发性,并允许独立的组件共享单个执行上下文 。同事件相关的任务集合可以很快被处理,不允许阻塞,具有高度并发性 。TinyOS只是搭建好了最基本的调度框架,只实现了软实时,而无法满足硬实时,这对嵌入式系统的可靠性会产生 。同时,由于是单任务的核心,吞吐量和处理器利用率不高,因此有可能需要设计多任务系统 。为保证系统的实时性,多採用基于优先权的可抢占式的任务调度策略 。依赖于套用需求,出现了许多基于优先权多任务的调度算法的研究 。把TinyOS扩展成多任务的调度,给TinyOS加入了多任务的调度功能,提高了系统的回响速度 。[提出在TinyOS中实现基于时限(deadline)的优先权调度,有利于提高WSN系统的实时性 。提出了一种任务优先权调度算法来相对提高过载节点的吞吐量以解决本地节点包过载的问题 。总之,调度决定了处理器的功耗,如TinyDB就是使用好的调度策略来降低功耗的 。更为重要的是,各种调度算法也能更好地提高处理器的回响速度,从而提高系统的可靠性 。各种基于TinyOS调度算法的扩展研究,各自独立地使得高可靠性和低功耗分别得到满足 。1.2 中断在TinyOS中,代码运行方式为回响中断的异步处理或同步地调度任务 。TinyOS的每一个套用代码里,约有41%-64%的中断代码,可见中断的最佳化处理非常重要 。对于低功耗的处理而言,需要长时间休眠,可以通过减少中断的开销来降低唤醒处理器的功耗 。目前通过禁用和打开中断来实现原子操作,这个操作非常的短暂(几个时钟周期--cycles) 。然而,让中断关掉很长时间会延迟中断的处理,造成系统反应迟钝 。TinyOS的原子操作能工作得很好是因为它阻止了阻塞的使用也限制了原子操作代码段的长度,而这一些条件的满足是通过nesC编译器来协助处理的 。由于nesC编译器对TinyOS做静态的资源分析以及其调度模式决定了中断不允许嵌套 。在多任务模式下,中断嵌套可以提高实时回响速度 。1. 3 时钟同步TinyOS提供获取和设定当前系统时间的机制,同时,在WSN网路中提供分散式的时间同步 。TinyOS是以通讯为中心的作业系统,因此更加注重各个节点的时间同步 。如:感测器融合应用程式收集一组从不同地方读来的信息(如:较短距离位置需要建立暂时一致的数据);TDMA风格的介质访问协定需要精确的时间同步;电源敏感的通讯调度需要传送者和接收者在他们的无线信号开始时达成一致等 。加州大学洛杉矶分校(UCLA) 、Vanderbilt和加州大学伯克利分校(UC Berkeley) 分别用不同方法实现了时间同步 。这3个实现都精确到子毫秒级,最初打算开发一个通用的、底层的时间同步组件,结果失败了 。应用程式需要一套多样的时间同步,因此只能把时钟作为一种服务来灵活地提供给用户取捨使用 。某些情况允许逐渐的时间改变,但另一些则需要立即转换成正确的时间 。当时间同步改变下层时钟时,会导致套用失败 。某些系统,例如NTP(Network Time Protocol)通过缓慢调整时钟率同邻节点同步来规避这个问题 。NTP方案很容易在像TinyOS那样对时间敏感的环境中出错,因为时间即使早触发几毫秒都会引起无线信号或感测器数据丢失 。目前TinyOS採用的方案是提供获取和设定当前系统时间的机制(TinyOS的通讯组件GenericComm使用hook函式为底层的通讯包打上时间戳,以实现精确的时间同步),同时靠套用来选择何时激活同步 。例如:在tinydb套用中,当一个节点监听到来自于路由树中父节点的时间戳讯息后会调整自己的时钟以使下一个通讯周期的开始时间跟父节点一样 。它改变通讯间隔的睡眠周期持续时间而不是改变感测器的工作时间长度,因为减少工作周期会引起严重的服务问题,如数据获取失败 。J. Elson和D. Estrin给出了一种简单实用的同步策略 。其基本思想是,节点以自己的时钟记录事件,随后用第三方广播的基準时间加以校正,精度依赖于对这段间隔时间的测量 。这种同步机制套用在确定来自不同节点的监测事件的先后关係时有足够的精度 。设计高精度的时钟同步机制是感测网路设计和套用中的一个技术难点 。也有一些套用更重视健壮性而不是最精确的时间同步 。例如:TinyDB只要求时间同步到毫秒级,但需要快速设定时间 。在TinyDB中,简单的,专用的抽象是种很自然的提供这种时间同步服务的方式,但是这种同步机制并不满足所有需要的通用的时间同步 。另外,还可以採取Lamport分散式同步算法,并不全部靠时钟来同步 。1.4 任务通讯和同步任务同步是在多任务的环境下存在的 。因为多个任务彼此无关,并不知道有其它任务的存在,如果共享同一种资源就会存在资源竞争的问题 。它主要解决原子操作和任务间相互合作的同步机制 。TinyOS中用nesC编译器检测共享变数有无冲突,并把检测到的冲突语句放入原子操作或任务中来避免冲突(因为TinyOS的任务是串列执行的,任务之间不能互相抢占) 。TinyOS单任务的模型避免了其他任务同步的问题 。如果需要,可以参照传统作业系统(例如μc/os)的方法,利用信号量来给多任务系统加上任务同步机制,使得提供的原子操作不是关掉所有的中断,从而使得系统的回响不会延迟 。在TinyOS中,由于是单任务的系统,不同的任务来自不同的网路节点,因此採用管道的任务通信方式,也就是网路系统的通信方式 。管道是无结构的固定大小数据流,但可以建立讯息信箱和讯息伫列来满足结构数据的通信 。2 WSNOS记忆体管理TinyOS的原始通讯使用缓冲区交换策略来进行记忆体管理 。当网路包被收到,无线组件传送一个缓冲区给套用;套用返回一个独立的缓冲区给组件以备下一次接收 。通讯栈中,管理缓冲区是很困难的 。传统的OS把複杂的缓冲区管理推给了核心处理,以拷贝複杂的存储管理以及块接口为代价,提供一个简单的、无限制的用户模式 。AM[ Active Messages ]通讯模型不提供拷贝而且只提供非常简单的存储管理 。讯息缓冲区数据结构是固定大小的 。当TinyOS中的一个组件接收到一个讯息,它必须释放一个缓冲区给无线栈 。无线栈使用这个缓冲区来装下一个到达的讯息 。一般情况下,一个组件在缓冲区用完后会将其返回,但是如果这个组件希望保存这个缓冲区待以后用,会返回一个静态地本地分配缓冲区,而不是依靠网路栈提供缓冲区的单跳通信接口 。儘管只有1个组件,任何时候只有一个进入给定缓冲区的指针,组件来回交换使用它们 。静态分配的记忆体有可预测性和可靠性高的优点,但缺乏灵活性 。不是预估大了而造成浪费就是小了造成系统崩溃,为了充分利用记忆体,可以採用回响快的简单的slab动态记忆体管理 。WSN通信通讯协定是WSNOS研究的另一大重点 。通讯协定的好坏不仅决定通讯功耗的大小,同时也影响到通讯的可靠性(包的丢失率,包过载等) 。TinyOS为满足这样要求的通讯协定提供了基于轻量级AM通讯模型的最小的通讯核心 。1 AM通讯模型介绍了这种轻量级的AM通讯模型,它构成TinyOS极小核心的通讯系统,其他套用都建立在这个通讯系统之上 。AM讯息包含用户级处理函式名称和作为参数传送的有效载荷,为了避免网路阻塞和保证充分的性能,讯息处理函式必须被很快地执行和异步处理 。所有的这些措施都是为了实现低功耗的通讯 。儘管AM源于大规模并行处理机和计算群集(Computing Cluster),但是一些基本概念也适用于资源受限的网路小设备 。特别是轻量级的AM体系结构可作为槓桿来平衡扩展的通讯框架的需求和有效的灵活性 。而且基于事件处理函式触发模型,使套用级的开发者得以避免对数据的忙等,使系统能交迭地同其他活动通讯(如,同感测器互动或执行其它的套用) 。2 WSN通讯协定介绍了AM为基础的单跳协定和多跳协定,如S-MAC[ Sensor-MAC: Medium Access Control for Wireless Sensor Networks用于感测器网路的介质访问控制]是其中一种单跳协定的低功耗实现;介绍了多跳通讯协定,主要解决自组织的网路路由 。简单介绍如下:S-MAC基于RTS/CTS[ Request to send/Clear to Send请求传送/清除传送协定]调度,并返回无线讯息来减少监听的开销 。S-MAC保持分段操作(split-phase)和无拷贝特性 。所谓分段操作即:在TinyOS中由于任务之间不能互相占先执行,所以TinyOS没有提供任何阻塞操作 。为了让一个耗时较长的操作儘快完成,一般来说都是将对这个操作的需求和这个操作的完成分开来实现,以便获得较高的执行效率 。自组织(Ad hoc)的网路路由是一种不需要网桥(AP[ Access Point])的无线对等传输模式 。任两个感测器若在彼此的通讯覆盖範围内,则这两个感测器可直接互相通讯,共享资源 。它具有对称性,即B若在A的通讯範围内,则A也在B的通讯範围内;但往往由于某些外部条件的限制,可能会造成这种对称的不协调 。若在两个相距较远的感测器之间通讯,可以寻找一个中间的感测器作为转发的节点,採用接力的方式来完成通讯过程 。利用这种方式可以增加无线网路的通讯範围,但随着传输次数增加,数据的正确率会降低,传输过程的可靠性也降低 。这种多跳路由一般可採用树状结构的集中,网路内部路由和分发(dissemination)3种形式 。比较普遍的是基于树结构的路由 。它包含父节点标识多跳数或从树根开始的深度(即:父节点的多跳数加1) 。一个节点传送一个包给父节点,该节点再传给其父节点,直到包到达树根 。设计的关键问题是怎样建立路由树和怎样维护以及怎样转发以便提高传输的可靠性并降低功耗 。主要用到两种方法:邻节点发现和连线质量估计服务;支持包的封装和监视转发 。WSN系统中,基站连线到PC,发出广播,接收到广播的节点更新路由信息,并重新广播给通过它自己可以连线到基站上的那些节点 。这些节点记住第一次监听到的路由更新,就是相应的到基站的最短路径 。为了防止路由循环,时间被分成多个时间段,每个时间段路由更新广播一次 。3 低功耗监听协定针对能量消耗,有以下四个特点:(1)主机模组MCU[ Micro-Controller Unit 微处理器]和收发模组占据电源消耗的绝大部分比重;(2)Active(激活)状态耗能最多,相对而言Idle(休眠)状态耗能最少;(3)收发模组比MCU耗能要多很多 。传送一个位元组(byte)消耗的能量约等于11000个MCU计算周期所消耗的能量,或是收发一位(bit)消耗的能量相当于MCU处理100条指令;从总体的消耗来看,收发数据所消耗的能量也是最多的 。如果我们能够让收发模组和MCU处于多数时间休眠,少数时间激活状态,那幺就能明显地降低系统的总体功耗 。介绍了两种典型的低功耗监听方式:周期性多跳监听(Periodic Multi-Hop Listening)和低功耗监听(Low Power Listening) 。巨观上进行周期性多跳监听,设定周期性採样的时间间隔来减少主机和通讯模组的激活工作时间,例如:每100秒激活10秒,则减少了90%的能耗,但是限制了实际的频宽;微观上进行低功耗监听,增加监听频率,把每100秒监听10秒变成每300微秒监听30微秒,这样可以在监听不到任何信息的时候让无线收发器处于休眠状态,并且能够在传送1/3位信息的时间内唤醒,但是需要额外花费传送5位信息的时间来检测信息的有无 。使用以上两种监听方式带来的降低功耗效果是显着的 。两者都不採用时MCU和收发模组的功耗都很大;只採用微观的低功耗监听,MCU的功耗明显降低,但是,收发模组的功耗降低不是很显着;只採用巨观的周期性多跳监听,MCU和收发模组的功耗都显着降低;两者都採用,MCU的功耗几乎为0,收发模组功耗显着降低 。可以用电池寿命数据来说明使用了以上两种监听方式带来的低功耗的效果 。两者都不採用时电池只能使用3天;只採用微观的低功耗监听,电池可以使用6.54天;只採用巨观的周期性多跳监听,电池寿命明显增加至65天;两者都採用,电池寿命可以达到数年 。可见,採用这两种监听方式把电池的寿命从3天延长到几年,对于套用来说是具有突破性意义的 。Intel的下一代Mote原型便採用这种策略来使得整个系统维持操作任务周期不超过1% 。