Download as pdf
Download as pdf
You are on page 1of 44

A COMPARATIVE

STUDY
OF
OPERATING SYSTEMS
FOR
WIRELESS SENSOR NETWORKS
WIRELESS SENSOR NETWORKS:
A wireless sensor network (WSN) is a wireless network
consisting of distributed autonomous devices (say motes) which contains
sensors to monitor environmental changes and these changes are
communicated to a remote computer at regular intervals.
MOTES:
Mote is a tiny hardware device which consists of Sensors,
Micro controller, Transceiver, Analog to Digital Converter and power
supply. It is capable of gathering information and send/receive data from
nodes in the wireless sensor network.

CHARACTERISTICS OF MOTES:
Smaller in size
Highly memory constrained devices
Low power consumption
Limited processing capacity
OPERATING SYSTEM FOR MOTES:
Motes are simple hardware devices and they need to
communicate with each other. For this we need an Operating System to
establish communication with other motes.

Operating Systems are used in Motes to achieve the following


features
Efficient multi-tasking
Networking
Memory management
Power management
Process scheduling

Available operating system for motes is as follows:


TINY
OPERATING
SYSTEM
TINY OS:
Tiny OS is a free open and open source operating system for
Wireless Sensor Networks. It started as a collaboration between the
University of California and Intel Research. Tiny OS is completely
written using nesC programming language.

FEATURES OF TINY OS:

Component-Based operating system.


Event driven Operating System.
Tasks are non-preemptive and run in First In First Out(FIFO) order.
Codes are linked statically.
Application and Libraries are written using nesC, a programming
language .

COMPONENT-BASED OS:
COMPONENTS:
Components can be defined as a functional part of a program that
has a predefined service. The main advantage of using component based
system is its enhanced reusability.
Eg.Linux OS is an example of a component-based operating
system .If you need an OS with only pdf viewer and media player, you can
simply chop off unnecessary components resulting in a simple OS with only
pdf viewer and media player.
EVENT DRIVEN OS:
In Event driven OS,the flow of a program is determined by the
sequence of events.Whenever an event occours,an interrupt signal is sent to
processor and yhe interrupt is served with the corresponding Interrupt
Service Routine.
The main reason for using event driven model is to minimize
power consumption.Tiny OS sleeps most of the time and only when the
event occours it moves into active state.This ensures that Tiny OS doesn't
consume most of the battery power.
NON PREEMPTIVE SCHEDULING:
Scheduling determines the order of process execution.In
NonPreemptive scheduling,the process which comes first,gets executed
first.The processes are executed in First In First Out(FIFO) order.
The main disadvantage of Non preemptive scheduling is process
starvation.Even high priority processes must weight in queue to be
executed.If a larger process is currently executing,all other smaller process
in queue has to wait until the previous process has executed.

NOTE:
The use of non preemptive scheduling does not affect the
performance of Tiny OS significantly ,since the processes are
Light weight.
Processs starvation doesn't occur.
No High priority process.
STATIC LINKING:
In Static linking, all the library files are included in compile
time and they are combined to form a single executable file. The main
advantage of static linking is that they require less time for execution and
the target platform need not contain the library files, since the library files
are linked to form a single executable file.
However Static Linking results in waste of memory, since the
entire library is loaded into the memory during execution .Here is a
comparison of dynamic and static linking stating the differences between
them.
STATIC LINKING DYNAMIC LINKING
 Same code will be available  Single copy of code is available in
both on Main memory and the system.
system.
 Memory space gets wasted.  Programs use limited memory.
 Programs are executed much  Program execution is slower when
faster when compared to compared to Static linking.
Dynamic linking
 Program size is larger than a  Program size is smaller when
dynamically linked program compared to Static linking.

NOTE :
Eventhough Dynamic linking is preferred to Static linking,in
Tiny OS ,program size is very small and hence using Static linking does
not have any adverse effect on Tiny OS performance.
nesC PROGRAMMING LANGUAGE :
 nesC is a programming language for developing Tiny OS
applications.
 Tiny OS libraries are written using nesC programming language
 nesC language is considered as an extension of C Programming
language and its syntax are similar to C.
 The building blocks of Tiny OS are Components, Configurations
and Interfaces.

Let us discuss about them and how they are implemented using nesC.
COMPONENTS:
 Components are discrete units with a specified function.
 Component can reference variables only from its local namespace.
 Component must not only declare the function it implements but also
declare the function it calls.
 Every component has a specification.
COMPONENT SPECIFICATION:
Every component must declare not only the functions it provides
(implements) but also the functions that it uses (calls).

module SmoothingFilterC {
provides command uint8_t topRead(uint8_t* array, uint8_t len);
uses command uint8_t bottomRead(uint8_t* array, uint8_t len);
}
Here the component SmoothingFilterC declares both the functions
topRead(which it implements) and bottomRead(which it calls) from
another component. The components are wired together using
Configurations.
CONFIGURATION:
 Configurations are used for wiring (linking) the components to
form a complete program.
 Configuration must specify the components (to be wired) and has a
predefined format.
 Configuration can provide and use interfaces.

CONFIGURATION SPECIFICATION:
configuration LedsC {
provides interface Leds;
}
implementation {
components LedsP, PlatformLedsC;
Init = LedsP;
Leds = LedsP;
LedsP.Led0 -> PlatformLedsC.Led0;
LedsP.Led1 -> PlatformLedsC.Led1;
}

Here the configuration LedsC specifies the components LedsP


and PlatformLedsC, which needs to be wired. The operator ”->” is used
for wiring the components. The operator arrow ”->” points from user to
provider.
INTERFACE:
 Interface provides a set of functions that can be implemented by
Components and Configurations.
 Interfaces are bidirectional in nature. They provide a set of
functions to be implemented by the inter-face’s provider
(commands) and a set to be implemented by the interface’s user
(events).
 Interfaces decide the functionality of the component that it
implements.

INTERFACE SPECIFICATION:

interface Send {
command error_t send(message_t* msg, uint8_t len);
event void sendDone(message_t* msg, error_t error);
command error_t cancel(message_t* msg);
command void* getPayload(message_t* msg);
}

Here the interface Send provides the commands and events


which needs to be specified by the interface-provider and interface-user
respectively.

Thus we have discussed the building blocks of Tiny OS programs


like Components, Configuration and Interfaces.
CONTIKI
OPERATING
SYSTEM
CONTIKI OS:
 Contiki OS is a open source and highy portable operating
System for Wireless Sensor Networks.
 Contiki OS was developed by Dr. Adam Dunkels at the
Swedish Institute of Computer Science.
 Contiki OS is developed for highly memory constrained
systems.
FEATURES OF CONTIKI OS:
 Contiki OS provides a multitasking kernel.
 Contiki OS comes with a Managed Memory Allocator to
guard against memory fragmentation.
 Contiki OS uses a preemptive scheduling technique for
scheduling the processes.
 Contiki OS processes uses extremely light weight threads
called Protothreads.
 Typical Contiki OS program requires minimum memory of
2KB RAM.

MULTITASKING KERNEL:
 Multitasking is a method in which several CPU processes
share same processing resources like Central Processing Unit.
 Multitasking resolves concurrency problems by scheduling the
processes.
 Multitasking enhances the performance of the OS by reducing
the execution time of a process.
MANAGED MEMORY ALLOCATOR:
 Managed Memory Allocator helps to guard against memory
fragmentation.
 Fragmentation refers to situation in which storage space gets
wasted due to improper memory allocation.
 Fragmentation can be classified into three types as follows
1. Internal fragmentation
2. External fragmentation
3. Data fragmentation
INTERNAL FRAGMENTATION:
 In internal fragmentation, storage space is allocated but it is
never used.
 Space remains unused inside the allocated region leading to
inefficient memory management.
EXTERNAL FRAGMENTATION:
 In external fragmentation, memory space becomes unusable
since its get divided into several small pieces over a period of
time.
 Reasons for external fragmentation can be attributed to poor
memory management algorithms.
 For example, in dynamic memory allocation, a block of 1000
bytes might be requested, but the largest contiguous block of
free space has only 300 bytes. The memory allocation fails in
this case.
DATA FRAGMENTATION:
 In data fragmentation, the piece of data in the memory is
scattered into different pieces.
 Data gets fragmented into many pieces in case of data
fragmentation.
PREEMPTIVE SCHEDULING:
 In preemptive scheduling, the processes are scheduled on the
basis of priority.
 Whenever a high priority process comes in,the low priority
process is temporarily preempted(interrupted) and the high
priority process get executed.
 The main advantage of preemptive scheduling is that high
priority processes gets maximum attention and they need not
wait.
 However preemptive scheduling also leads to process
starvation,since the low priority process needs to wait
indefinitely until the high priority processes are executed.
PROTOTHREADS:
 Protothreads are lightweight, stackless threads used by Contiki
OS processes.
 Protothreads don't require their own stack rather all
protothreads run on the same stack.
 Protothreads are lightweight because they use very limited
memory ( 2KB/protothread).
 Protothreads do not make operating system call.
 Protothreads provides a linear code of execution.
NOTE:
 Sharing a stack between the processes is impossible in order to
avoid concurrency problems.
 In general, every thread requires it's own stack for execution.
 Protothreads provides linear execution and hence it becomes
difficult to use conditional statements like if() and while()
statements.

Thus we have discussed the features of Contiki OS like Managed


Memory Allocator, Preemptive Scheduling and Protothreads.
SIMPLE
OPERARTING
SYSTEM (SOS)
SIMPLE OPERARTING SYSTEM:
Simple Operating System(SOS) is an operating system
wireless sensor networks developed by the Networked and Embedded
Systems Lab (NESL) at University of California, Los Angeles. SOS
currently supports Atmel-Atmega and Oki-Arm hardware platforms.

FEATURES OF SOS:
 SOS was developed keeping Dynamic Reconfigurability in
mind.
 SOS provides a convenient and a compact kernel interface.
 SOS ensures safety through run time checks.
 SOS provides a priority scheduling of processes.
 SOS uses an event driven programming module.
 SOS is purely written in C Programming language.

DYNAMIC RECONFIGURABILITY:
 Dynamic Reconfiguration enables us to modify the system during
its runtime.
 It is an important feature for WSN operating system,since we are
able to modify the software module remotely without reaching the
place where the device is deployed.
 Basically in a WSN, the motes are scattered and hence it becomes
difficult to identify the mote and reconfigure its operating system.
 This problem can be solved using Dynamic reconfigurability.
APPLICATIONS OF DYNAMIC RECONFIGURABILITY:
 Applying patches and updates while OS is running.
 Alter the software module, whenever it is needed.
 Any 3rd party modules can be installed and reconfigured
remotely.

COMPACT KERNEL INTERFACE:


 SOS provides a multitasking kernel that provides
1. Dynamic Memory Management
2. Garbage collection
3. Priority Scheduling

DYNAMIC MEMORY MANAGEMENT:


 Dynamic memory management refers to allocating and
deallocating memory during run-time.
 Garbage collection is a part of Dynamic memory management.
 Garbage collection refers to removing the objects, which are no
longer needed in a program and reclaim the memory.
 Dynamic memory management increases the efficiency of
programs and uses the memory efficiently.
PRIORITY SCHEDULING:
 Priority scheduling is a technique in which the processes are
scheduled on the basis of priority.
 Whenever a high priority process comes for execution, low
priority process is preempted (interrupted).
 A context switch is said to have occurred (ie) current state of the
low priority process is saved in a Process Control Block (PCB).
 Once the high priority process has finished executing, the state of
the low priority process is restored from the Process Control
Block (PCB) and the process starts executing from the state
where it was originally preempted.
 The main advantage of Priority scheduling is that high priority
process doesn't starve and executed immediately.

CONCLUSION:
Thus Simple Operating System(SOS) provides the following
features
 Dynamic Reconfiguration
 Multitasking kernel
 Dynamic Memory Management
 Garbage collection
 Priority scheduling
From this we can infer that SOS offers exciting features for
programming memory constrained, mote class Wireless Sensor Networks.
NANO-RK
OPERATING
SYSTEM
NANO-RK:
Nano-RK is an operating system for mote class Wireless Sensor
Networks developed by Carnegie Mellon University. Nano-RK currently
runs on the FireFly Sensor Networking Platform as well as the MicaZ
motes.

FEATURES OF NANO-RK:
 Nano-RK is a reservation based operating system.
 Nano-RK has a multitasking kernel.
 Nano-RK supports priority based preemptive scheduling.
 Nano-RK enforces resource usage limitations.

RESERVATION BASED OS:


 Nano-RK enforces strict reservation policy.
 In order to ensure that the process starvation doesn't happen,
all the process must inform the Nano-RK Resource Kernel, in
advance, regarding their memory and resource
requirements.
 Nano-RK kernel carefully monitors the resource usage for
each process.
 Only the process that haven't depleted their resource limits are
eligible for scheduling.
PRIORITY BASED PREEMPTIVE SCHEDULING:
In Preemptive scheduling, the process in a running state can
be preempted by a process having a higher priority than the
current process.
In Nano-RK we use priority based preemptive scheduling
where the higher priority process, can preempt (interrupt) the
lower priority process and obtain access to the CPU.
The main advantage of using priority based preemptive
scheduling is to ensure that critical (high priority) processes
doesn’t wait in a queue for execution.
POWER CONSUMPTION:
Nano-RK enforces power savings in order to maximize
battery life.
Nano-RK ensures that all the sensors are turned off (by
default) to reduce power consumption.
The power consumption of a typical FireFly Sensor node in
active state is around 24mW.
Thus Nano-RK is a reservation-based, energy-efficient
operating system for highly resource-constrained sensor network
environments. Nano-RK also supports multitasking and provides API for
enhancing the ease of application development.
MANTIS
OPERATING
SYSTEM
MANTIS OS:
Mantis is the acronym of MultimodAl system for
NeTworks of In-Situ wireless Sensors.
Mantis OS originated as a WSN project at the University of
Colarado.
Mantis OS is purely written using C Programming
language.
It is energy efficient OS for mote class Wireless Sensor
Networks.

FEATURES OF MANTIS OS:


Mantis OS supports Dynamic Reprogramming.
Mantis OS uses priority based round robin scheduling.
Mantis OS consists of a multithreaded kernel.
Mantis OS has a very small memory footprint. A simple
Mantis OS program requires only about 500 Bytes of RAM.
Mantis OS is a highly energy efficient OS and consumes
about 20 mA current in active state.
MULTITHREADED KERNEL:
Multithreading ensures that several threads of processes can
share the same CPU resource.
Multithreading does not mean that several threads run at
the same time because CPU executes only one thread at a
time.
Since the processor can execute multiple threads within a
given time period, is referred to as Multithreading.
Consider a process having a clock speed of 3.33GHz, then
the time of execution of a thread is approximately 300µs.
Multithreading implies that a processor can execute several
processes within a given time slice.

PRIORITY BASED ROUND ROBIN SCHEDULING:


Round Robin Scheduling algorithm specifies a time
quantum for each process.
All the processes are expected to complete their execution
within the given time quantum.
If the process doesn’t complete its execution within the
specified time quantum, the process gets preempted and it
is sent to the tail of the queue.
Each process must repeat this, until it is completely
executed.
However, in Mantis OS we use a priority based round robin
scheduling.
Round Robin Scheduling is considered as one of the best
scheduling algorithms, since it ensures fairness in process
scheduling and all the process gets access to their resources.
However, there is a memory overhead in Round Robin
Scheduling Algorithm is considered as undesirable.
Memory overhead occurs in Round Robin Scheduling
Algorithm due to the following reasons
 Once the time quantum of a process is over,
the process is preempted (interrupted) and
sent to the tail of the queue.
 As a result, the current state of the running
process (context) must be saved in a Process
Control Block (PCB), in order to restore the
state of the process after some period of time.
 As a result of frequent context switching,
the states of the preempted process must be
saved frequently in the Process Control
Block.
 This results in a memory overhead involving
saving and restoring the context of the
threads.
The only difference in priority based Round Robin
scheduling than that of normal Round Robin scheduling is
that the processes are served on the basis of their priority.

ILLUSTRATION:
Consider the following table stating the processes, their
priority along with their Service Time.
PROCESSES PRIORITY SERVICE TIME
P1 1 4
P2 2 6
P3 3 2
P4 4 4
TIME QUANTUM=2µs

The process of Round Robin scheduling can be illustrated


with the help of Gantt chart.

P1 P1 P2 P2 P2 P3 P4 P4
0 2 4 6 8 10 12 14 16
Here the process is P1 preempted after the given time
quantum and sent to the tail of the queue.
But how process P1 immediately comes to the execution?
It should have been actually executed only after P4!

P1 P1 P2 P2 P2 P3 P4 P4

The answer for the above question is priority (because


process P1 has highest priority).
Similarly other processes namely P2, P3 and P4 are
executed on the basis of priority.
DYNAMIC REPROGRAMMING:
Mantis OS provides remote management feature through
dynamic reprogramming.
Dynamic Reprogramming is an feature for Wireless Sensor
Network OS for the following reasons
 Mote devices used in Wireless Sensor Network are
deployed in remote areas, which may remain
inaccessible to humans.
 Whenever we need to modify a software module, it
becomes impossible to locate the mote and then
modifying its software components.
 There we need dynamic reprogramming, inorder to
ensure remote management of Wireless Sensor
Network nodes.
Mantis OS offers two modes of programming for the purpose of
dynamic reprogramming.
 SIMPLER PROGRAMMING
In simpler programming, the user simply
connects the PC directly to the Mantis node
used in the Wireless Sensor Network.
The user simply connects the node to a PC
and opens the MANTIS shell.
MOS enters a boot loader that checks for
communication from the shell.
The OS gets directly downloaded to the
MOS mode and the node is updated.
 ADVANCED PROGRAMMING:
In this mode, the node doesn’t require a
direct connection with the computer.
Dynamic Reconfigurability capability is
actually implemented as a system call
library, which is built into the MOS
kernel
After the call, the code is downloaded and
stored in a flash memory.
The software is completely reset and the
reprogramming is done.
Dynamic Reconfigurability is usually
performed by establishing a remote
connection with the node in the Wireless
Sensor Network.

The support for Dynamic Reconfiguration is in progress and yet to


attain a stable state.
Thus Mantis OS provides a support for Dynamic Reconfiguration
providing a remote management facility to the user and uses an
efficient Round Robin Scheduling algorithm.
SUN SMALL
PROGRAMMABLE
OBJECT
TECHNOLOGY
SUN SPOT:
SUN Small Programmable Object Technology is an Operating
System for Wireless Sensor Network developed by Sun
Microsystems.
SUN Small Programmable Object Technology is deployed in a
device called as Sun SPOT device.

Sun SPOT device is a small and wireless device developed by


Sun labs.
Sun SPOT device is Java platform wireless device and they are
programmed purely in Java.
SUN SPOT DEVICE:
Sun SPOT devices are the target platform for Sun SPOT
Technology.
Sun SPOT devices are programmed in Java and any java program
needs a virtual machine for execution.
Squawk Virtual Machine is an open source Java virtual machine
for highly resource constrained Wireless Sensor Networks.
The main advantage that Sun SPOT is that, it is programmer
friendly. The programmer can use the native Java tools for
developing applications for Sun SPOT device.
Sun SPOT provides a Software Development Kit, providing the
API and hence programming the Sun SPOT device becomes easy.
SUN SPOT FEATURES:
Sun SPOT uses a compact Squawk Virtual Machine.
Sun SPOT is the only operating system for Wireless Sensor
Networks that comes with inbuilt security feature.
Sun SPOT uses Elliptic Curve Cryptography(ECC) for ensuring
the security of the data packets shared across the nodes in the
Wireless Sensor Network
Sun SPOT has a Garbage Collector and it ensures automatic
memory management.
Sun SPOT is easy to program, since it is facilitates the user to code
the programs using the familiar Java Programming Language.

SQUAWK VIRTUAL MACHINE:


Squawk Virtual Machine is an open source Java Virtual Machine
developed by Sun Microsystems.
The specialty about the Squawk Virtual Machine is that it is
majorly (not fully) written using Java Programming Language.
Squawk Virtual Machine outputs a very compact byte code. The
original output byte code is only about 35-40% of standard J2ME
class file.
Squawk Virtual Machine uses a Garbage Collector for managing
memory.
Squawk Virtual Machine uses a green threading model, in which
the processes are scheduled purely by the Virtual Machine and
not by the Operating System.
GREEN THREADING MODULE:
In green threading module, the green threads (threads) are
scheduled by the Virtual Machine and not by the underlying
Operating System.
Generally the virtual memory can be differentiated into User
Space and Kernel Space.

Green threads are managed in the User Space and they do not rely
on the underlying OS.
In fact, Operating System does not know about the Green
threads.
Green Threading model uses priority scheduling to schedule the
green threads.
The main advantage of using green threaded model is due to the
following reason
 Reduces the overhead on OS, since the Virtual Machine
takes care of scheduling the green threads.
 Enhances the portability of a program ,since the green
threads doesn’t depend on the Operating System and they
purely rely on Virtual Machine
GARBAGE COLLECTOR:
Garbage collection is a memory management feature present in
Squawk Java Virtual Machine.
The term “garbage” refers to the unused objects (or they are no
longer needed) in the Java program.
Whenever the object is no longer referenced by the program, then
the heap space it occupies must be freed.
Garbage Collector must determine the unused object and reclaim
the free space.
Hence the Garbage Collector is not only responsible for automatic
memory management but also guard against memory
fragmentation (inefficient usage of memory space).

Thus we have discussed the features of Sun SPOT like


Green Threaded Model, Squawk Virtual Machine, Garbage Collection
and Preemptive Scheduling.
COMPARATIVE STUDY OF
OPERATING SYSTEMS
FOR
WIRELESS
SENSOR NETWORKS
POINTS OF COMPARISON:
Supported Hardware Platforms
Nature of Operating System
Nature of Scheduling
Nature of Programming Language
Dynamic Reconfigurability
Garbage collection
SUPPORTED HARWARE PLATFORMS:

TelOS Mica2 ESB TMote Atmel- Oki Fire Sun


Mote Sky Atmeg Arm Fly Spots
a
TINY
OS

CONTIKI
OS

SOS

NANO-RK

MANTIS

SUN
SPOT
NATURE OF OPERATING SYSTEM:

EVENT- MULTITASKING
DRIVEN OS
OS
TINY OS

CONTIKI OS

SOS

NANO-RK

MANTIS

SUN SPOTS
NATURE OF SCHEDULING:

NON PRIORITY ROUND


PREEMPTIVE SCHEDULING ROBIN
SCHEDULING SCHEDULING

TINY OS

CONTIKI
OS
SOS

NANO-
RK
MANTIS

SUN
SPOTS
PROGRAMMING LANGUAGE:

nesC C JAVA

TINY OS

CONTIKI OS

SOS

NANO-RK

MANTIS

SUN SPOTS
DYNAMIC RECONFIGURABILITY:

DYNAMIC
RECONGIGURANILITY
TINY OS

CONTIKI OS

SOS

NANO-RK

MANTIS

SUN SPOTS
GARBAGE COLLECTION:

GARBAGE COLLECTION

TINY OS

CONTIKI OS

SOS

NANO-RK

MANTIS

SUN SPOTS
CONCLUSION:
Thus we have discussed following operating systems for Wireless
Sensor Networks

We have also discussed the salient features of these operating


systems like
Nature of operating System
Nature of Linking
Nature of Process Scheduling
Nature of Programming language.

Each Operating System has its unique feature and they have their
own merits and demerits.
However the operating systems for Wireless Sensor Networks are
gradually evolving to attain stability and security.

You might also like