一、WSNs概述
由大量传感节点组成,通过无线通信的方式形成一种多跳自组的网络系统,这些传感节点能实时检测、感知、采集和处理监测环境的相关信息(人与物,物与物、无线自组网络)
- 研究进展:
第一代:点对点传输、具有简单信号获取能力的传感器、连接传感控制器来构成网络
第二代:采用串/并口与传感控制器相连,使传感器网路有了综合的信息处理能力
第三代:智能
第四代:无线自组传感器网络
2. 无线传感网络的特征
无线网络的两种分类:需要有固定基站的网络(手机) + 无线自组网络(没有专门固定的基站、动态拓扑、自组;无线传感网络属于ad hoc NetWork)
1)无线传感器网络结构:传感器节点+汇聚节点+基础设施网络(internet、卫星)+管理节点(与用户交互)
传感器节点:自组织形成感知网络,采集到的数据经过多跳方式进行传输和处理,之后传给汇聚节点(采集数据 + 处理数据 + 路由功能;
汇聚节点:连接传感器网络与因特网等外部网络,实现将物理数据传给网络服务器数据
基础设施:连接汇聚节点和管理节点
管理节点:用户管理传感器数据
2)传感器节点结构(采集、处理、传输)
传感器节点的组成:电源模块、传感模块(信息的采集与转换)、计算模块(核心:处理数据,采用嵌入式处理器(单片机))、存储模块、通信模块、嵌入式模块(最基本的功能:数据采集、处理、传输功能)
嵌入式软件系统是无线传感器网络的重要支撑
二、无线传感器网络操作系统
1、无线传感网络对操作系统的需求
操作系统概念的简单介绍
操作系统:支撑应用程序运行环境和用户操作环境的系统软件(对硬件的管理和抽象),即操作系统时对系统资源的进行管理和抽象的程序集合,用户通过操作系统能简单有效地利用系统资源
嵌入式系统:执行独立功能的专用计算机系统
嵌入式系统软件:
三、TinyOS操作系统简介
(基于组件编程、事件驱动的嵌入式操作系统)
- 无线传感器网络专门的嵌入式操作系统 + 采用组件的架构方式(要用到的组件才会被编译、不用的话就不会被编译、减少内存的消耗)
- 基于事件驱动的运行模型(并发 + 节能)
- TinyOS组件库包括:网络协议、分布式服务、传感器驱动 、数据库获取驱动等
1、设计理念:
应用程序根据需要选配、修改和创建组件,组件与组件之间通过command(向下调用)和event(向上调用)相联系。因此TinyOS被称为事件驱动操作系统。
无分层,采用平面设计
组件化编程方式
2、技术特点(4个)
A)组件化编程
组件:对软件、硬件功能抽象,TinyOS系统看成是由组件构成的
B)事件(中断处理线程、硬件中断)驱动机制
TinyOS应用程序采用的是事件驱动机制,通过触发事件唤醒传感器工作;
事件相当于不同组件之间传递状态信息的信号(当事件对应的硬件中断发生时,会调用相关的事件处理程序,执行相关的操作任务)
C)轻量级线程技术及两层调度方式
TinyOS的两级调度体系:任务和硬件事件处理两级调度体系。
轻量级线程:即任务,任务之间相互平等,不能抢占,FIFO
硬件事件处理(数据包收发、数据的采集):优先级高的可以抢占
D)基于事件驱动模式的最主动消息通信方式(不是很明白)
将消息作为函数的参数
3、体系结构:
A)TinyOS操作系统是采用nesC语言编写的
nesC语言:组件化编程 + 事件驱动理念 + 扩展的C语言 + 并发 + 两级调度方式(任务 + 事件(可抢占))
B) TinyOS体系结构:TinyOS本身提供了一系列组件供用户调用,可分为三层:
1) 硬件抽象组件:将硬件组件抽象到TinyOS的组件模型
2) 综合硬件组件:模拟高级硬件的功能,它包括的组件有:
感知组件:
执行组件:
通信组件:
3)高层软件组件:实现控制、路由、数据传输等应用层功能
总之,高层组件向底层组件发出命令,底层组件向高层组件报告事件;底层组件负责接收原始数据,高层组件对这些数据编码和解码,再高一层的数据辅助数据打包、路由和传输。
高层软件组件中的主(Main)组件介绍:节点上电后首先执行该组件(硬件的初始化、启动任务调度器、执行应用组件的初始化工作)
高层软件组件中的应用组件介绍:TinyOS程序开发的重点,实现程序的逻辑功能,例如数据采集、处理、收发
注意:应该把TinyOS和我们写的应用程序看成一个完整的无线传感器程序(TinyOS内核和应用程序会被一起编译成可执行的程序)。
4、版本说明
TinyOS2.x的内核模型重新开发,不向下兼容(但也可以移植)
TinyOS2.X还没从1.x引进的特色工具介绍:
A)TinyViz:显示仿真情况的用户界面
B)TinyDB:从无线传感网络中析取数据的查询处理系统
四、与其他操作系统的比较(这里只介绍TinyOS)
1、系统架构
事件驱动的系统,会将内核和应用程序一起编译成一个可执行程序
2、调度器(内存开销和能耗)
TinyOS实现了任务和事件的两级调度
对任务的调度:FIFO,任务之间不能抢占;
对事件的调度:事件能抢占任务,事件之间也能相互抢占
3、并发问题
操作系统中容易混淆的概念介绍(很多人分的都不是很清楚):
进程同步:事情一件一件的做,完成这件事才能继续下一件事情,例如发信息的过程
进程异步:这件事情还没完成,可以做其他事情,譬如说边下载边浏览网页
并发:一个CPU执行多个程序
并行:多个CPU执行多个程序)
TinyOS提供的两个执行的线程:任务和事件
1)进程同步:nesC会检查数据竞争状态:异步函数(命令或事件)不能调用同步函数(命令或事件);TinyOS使用原子块操作,把临界资源放在原子块中实现进程间的同步访问
2)进程通信:使用事件触发机制实现通信,传值或者指针(共享内存、纯局部的命名空间、所实现和调用的函数都是局部)
4、内存管理:静态分配管理内存,即在编译时为组件分配内存
5、远程节点重编程服务(实效、升级):通过无线电(使用了XNP机制)
6、电源管理:显示能量管理模型(由高层组件管理设备状态)和隐式能量管理模型(设备自身管理自己的状态)
7、外部设备管理:将系统资源分为三种不同的抽象:独享资源抽象 、虚拟资源抽象、共享资源抽象
8、模拟服务:TinyOS的模拟器:TOSSIM(本来是要在硬件上显示的东西,通过模拟器以程序的形式显示)