Publication Type |
technical report |
School or College |
College of Engineering |
Department |
Computing, School of |
Program |
Advanced Research Projects Agency |
Creator |
Regehr, John; Eide, Eric Norman |
Other Author |
Cooprider, Nathan; Archer, Will |
Title |
Memory safety and untrusted extensions for TinyOS |
Date |
2006-06-30 |
Description |
Sensor network applications should be reliable. However, TinyOS, the dominant sensor net OS, lacks basic building blocks for reliable software systems: memory protection, isolation, and safe termination. These features are typically found in general-purpose operating systems but are believed to be too expensive for tiny embedded systems with a few kilobytes of RAM. We dispel this notion and show that CCured, a safe dialect of C, can be leveraged to provide memory safety for largely unmodified TinyOS applications. We build upon safety to implement two very different environments for TinyOS applications. The first, Safe TinyOS, provides a minimal kernel for safely executing trusted applications. Safe execution traps and identifies bugs that would otherwise have silently corrupted RAM. The second environment, UTOS, implements a user-kernel boundary that supports isolation and safe termination of untrusted code. Existing TinyOS components can often be ported to UTOS with little effort. To create our environments, we substantially augmented the CCured toolchain to emit code that is safe under interrupt-driven concurrency, to reduce storage requirements by compressing error messages, to refactor direct hardware access into calls to trusted helper functions, and to make safe programs more efficient using whole-program optimization. A surprising result of our work is that a safe, optimized TinyOS program can be faster than the original unsafe, unoptimized application. |
Type |
Text |
Publisher |
University of Utah |
Subject |
TinyOS |
Subject LCSH |
Sensor networks |
Language |
eng |
Bibliographic Citation |
Regehr, John; Cooprider, Nathan; Archer, Will; Eide, Eric Norman (2006). Memory safety and untrusted extensions for TinyOS. UUCS-06-007. |
Series |
University of Utah Computer Science Technical Report |
Relation is Part of |
ARPANET |
Rights Management |
©University of Utah |
Format Medium |
application/pdf |
Format Extent |
265,284 bytes |
Source |
University of Utah School of Computing |
ARK |
ark:/87278/s65b0krd |
Setname |
ir_uspace |
ID |
703657 |
Reference URL |
https://collections.lib.utah.edu/ark:/87278/s65b0krd |