Atomicity and Visibility in Tiny Embedded Systems

John Regehr Nathan Cooprider David Gay
regehr@cs.utah.edu coop@cs.utah.edu david.e.gay@intel.com

University of Utah, School of Computing
50 South Central Campus Drive, Room 3190
Salt Lake City, Utah 84112-9205
      Intel Research
2150 Shattuck Avenue, Suite 1300
Berkeley, CA 94704, USA

In Proceedings of the PLOS 2006 Workshop on Linguistic Support for Modern Operating Systems, San Jose, California, October 2006.

© ACM, 2006. This is the author's version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. The definitive version was published in PLOS 2006.

Abstract

Visibility is a property of a programming language.s memory model that determines when values stored by one concurrent computation become visible to other computations. Our work exploits the insight that in nesC, a C-like language with explicit atomicity, the traditional way of ensuring timely visibility.volatile variables.can be entirely avoided. This is advantageous because the volatile qualifier is a notorious source of programming errors and misunderstandings. Furthermore, the volatile qualifier hurts performance by inhibiting many more optimizations than are necessary to ensure visibility. In this paper we extend the semantics of nesC.s atomic statements to include a visibility guarantee, we show two ways that these semantics can be implemented, and we also show that our better implementation has no drawbacks in terms of resource usage.



Nathan Cooprider <coop@cs.utah.edu>