## 3 Novel Taxonomy for SSNs
### Low Level Virtualization
#### 3.1.1. LLV Based on Operating System Virtualization Solutions
The performance evaluation of PAVENET is compared to TinyOS, where the results indicate that the hard real-time tasks at 100 Hz sampling are realized in PAVENET much more precisely than TinyOS, the memory usage in PAVENET is more than TinyOS for sample applications, while the execution times of sample applications is comparable to TinyOS; also, the programming complexity was studied and it was found that the code lines of PAVENET are shorter than that of TinyOS, which is because PAVENET can complement a sequence of tasks in one task. Finally, the task switching overheads were compared with two different OSs, where it was found that it was five times less than MANTIS and was comparable to TinyOS. * **SenSpire**[37]: It is a hybrid programming model OS, which adopts a multilayer abstraction approach in order to develop networked applications, which support both event driven and thread based programming models using a CSpire object-oriented language to program the application'stasks, while the kernel tasks are programmed in C. Regarding SSNs, SenSpire ensures that tasks can be programmed as events or as threads, see Figure 11.  
The higher execution priority is for event tasks. Therefore, the system tasks are written as events that are predictable and easier to maintain, while the application tasks are written as threads with different levels of priorities. The **SenSpire** design is based on three principles, as follows:  
* **Predictability:** it uses two-phase interrupt servicing and predictable thread synchronization to guarantee that sensor nodes respond to control messages. * **Flexibility:** it is achieved by providing a hybrid model for both event-driven programming and multithread programming, to ensure that the sensor nodes remain available for data forwarding when needed. * **Efficiency:** the OS implementation handles the resource constraints of sensor nodes, it uses stack sharing to reduce memory consumption, and also enables energy efficient network reprogramming in the modular design. * **SenSpire** network abstraction is provided using a new three layer network stack (radio, resource and sensornet), the radio layer implements device specific MAC protocols, the resource layer virtualizes the radio hardware, scheduling concurrent tasks, and sensornet layer implements the neighborhood management and link estimations, which can be shared among different upper-layer network routing protocols. **SenSpire** is implemented on the Mica2, MicaZ, and TelosB motes to obtain its performance evaluation when compared to MANTIS [34] and TinyOS [30]. The results studied the interrupt latency, which is less than TinyOS, latency of bottom halves experiment is compared to TinyOS, hybrid programming model flexibility that was provided by SenSpire, preemptive kernel, scheduling hierarchy, and scheduler overhead, which has more delay when compared to MANTIS, overall system efficiency, which shows less CPU, and memory utilization when compared to MANTIS, while keeping normalized to TinyOS, and reprogramming efficiency, at which the program code size is less than both TinOS and MANTIS. The results show that SenSpire OS ensures predictable system performance, provides a flexible hybrid model for application programming, and is efficient in resource utilization. * **LiteOS**[38]: is an open source, Unix-like operating system that fits on memory-constrained sensor nodes. It gives users the ability to operate WSNs, like operating UNIX, which will be easier for people with adequate UNIX background. It provides (1) a hierarchical file system and a command shell interface for user interaction using UNIX-like commands working wirelessly; (2) kernel support for dynamic loading and native execution of multithreaded applications; and, (3) online debugging, dynamic memory, and file system assisted communication stacks. The LiteOS design architecture consists of three subsystems: LiteShell, LiteFS, and the kernel, as shown in Figure 12.  
Figure 11: SenSpire Hybrid Programming Model.