Sensor networks are inherently communication-centric systems. The sensor nodes form wireless networks through which sensor readings can be transported or where nodes can act directly on data communicated from their neighbours. For sensor nodes to build networks, they need network protocols. The network protocols define the sequence of steps for the nodes to take in order to communicate with each other as well as the message formats. Sensor network communication is made challenging both by the physical communication environment, which is characterized by frequent and unpredictable bit errors as well as frequently changing topologies, and by the resource constraints of the individual nodes.
For network protocols to operate, an operating system that implements the protocols runs on every node. The operating system manages the resources on each node, provides a layer of abstraction for the hardware, and gives the system developer a programming interface that allows applications to be efficiently implemented. The severe resource constraints, the diversity in hardware platforms and the novelty in applications make sensor network design a challenge.
2. Sensor network operating systems
Sensor networks have severe resource constraints in terms of processing power, memory size and energy, while operating in a communication-rich environment that interfaces both with the physical world and with other sensor network nodes. The operating system must efficiently manage the constrained resources while providing a programming interface, i.e. allow system developers to create resource-efficient software.
An operating system multiplexes hardware resources and provides an abstraction of the underlying hardware to make application programs simpler and more portable. Unlike general-purpose computers, which have settled for a number of semi-standardized hardware architectures, sensor network hardware is extremely diverse in terms of processor architectures, communication hardware and sensor devices. This makes operating system design for sensor networks a challenge.
In the sensor network research community, several operating systems have been developed, with each offering a different solution for the fundamental problems. TinyOS and Contiki are perhaps the two most well-known systems. TinyOS defines its own programming language called nesC , an extension to the C programming language, whereas Contiki uses standard C. Mantis , SOS and LiteOS are also widely cited sensor network operating systems.
Operating systems for sensor networks share some characteristics with real-time operating systems for embedded systems. Like sensor network nodes, embedded systems also often have severe resource constraints. But unlike embedded systems, sensor network nodes must interact both with the physical world and with each other: sensor networks are highly communication-intensive systems. This communication intensity adds additional challenges in terms of resource management and operating system structure.
(a) Fundamental problems
The fundamental problem that an operating system addresses is that of resource allocation. A sensor network node has a limited set of resources in terms of processor time, memory, storage, communication bandwidth and energy. The role of the operating system is to efficiently manage the available resources.
The operating system also provides a system programming interface to developers. This interface must be easy to use for system developers while providing efficiency. This results in additional constraints to the way the operating system can be designed.
(b) Sensor network node hardware
A sensor node consists of sensors and actuators, which interact with the physical world around the sensor node; a microcontroller, which interacts with the components and executes the software; a communication device, which typically is a radio; and a power source, which often is a battery but which also can be an energy-scavenging device such as a solar cell. Additionally, the sensor node may also contain secondary storage, such as on-board flash memory. Unlike general purpose computers, sensor network nodes do not have support for memory hierarchies, multiple protection domains or multi-level caches.
The hardware of a sensor node consists of a communication device, typically a radio, a microcontroller, a set of sensors and actuators and a storage device, typically a flash chip.
Typical hardware platforms for sensor network nodes have processing speeds of the order of a few megahertz, memory size of the order of hundreds of kilobytes and must run with less than 1 mW of power. Although Moore’s Law has somewhat relaxed the resource limitations over the past 10 years, it has primarily driven the hardware development in the direction of smaller, less expensive hardware platforms and lower power draws. With many sensor network applications requiring extremely low-cost devices, hardware development is unlikely to yield any extensive improvements in resources for the foreseeable future.