Title: Resource aware programming in sensor networks
Description: This dissertation presents a platform for designing wireless sensor network applications that are data-intensive and must cope with variations in load and resource availability. Our thesis is that existing programming models and operating systems do not provide the right level of abstraction and primitives for resource management. Sensor network operating systems tend to expose a wide range of low-level primitives for resource management with little guidance in how to use them. To address these challenges, we explore resource awareness at two levels: at the node-level through a new OS called Pixie and at the network-level through a Body Sensor Network platform called Mercury. The first component of our solution, Pixie, is a new operating system for sensor networks that enables resource-aware programming, a model in which applications receive feedback on and have explicit control over resources. Pixie uses a dataflow programming model and is based on resource tickets, a core abstraction for representing resource availability and reservations. By giving the system visibility and fine-grained control over resource management, a broad range of policies can be implemented. To shield application programmers from the burden of managing these details, Pixie provides resource brokers, which mediate between low-level physical resources and higher-level application demands.

The second component of our solution, Mercury, is a wearable sensor network platform for high-fidelity motion analysis studies. Mercury strives to manage resources across the network; it does so by receiving periodic resource availability messages from individual nodes running Pixie and then makes network-wide decisions regarding resource usage. Mercury is designed to overcome the core challenges of long battery lifetime and high data fidelity for long-term studies. This requires tuning sensor operation and data transfers based on energy consumption of each node and processing data under severe computational constraints. In addition, Mercury provides a high-level API allowing a range of policies to be implemented on top of the core functionality. This dissertation presents the architecture, implementation, and evaluation of Pixie and Mercury, and demonstrates that the node-level view through the Pixie OS and network-wide management through the Mercury platform is an effective way to build resource aware applications.