03.08.2013 Views

Design and Implementation of TinyGALS: A Programming Model for ...

Design and Implementation of TinyGALS: A Programming Model for ...

Design and Implementation of TinyGALS: A Programming Model for ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

does not require synchronization, which will result in a large footprint <strong>and</strong> slow execution. 1<br />

Unlike s<strong>of</strong>tware <strong>for</strong> traditional computer systems, s<strong>of</strong>tware <strong>for</strong> embedded systems is<br />

application-specific <strong>and</strong> <strong>of</strong>ten encapsulates domain expertise, especially when it must pro-<br />

cess sensor data or control actuators [27]. As a result, although concurrency has long been<br />

a key research theme <strong>for</strong> systems s<strong>of</strong>tware such as operating systems <strong>and</strong> distributed com-<br />

puting middleware [6, 33, 32], <strong>for</strong>mal treatment <strong>of</strong> them in embedded systems has largely<br />

been ignored by mainstream computer science researchers until recently. The application-<br />

specific nature <strong>of</strong> embedded s<strong>of</strong>tware, combined with tight constraints on available pro-<br />

cessing power <strong>and</strong> memory space, make traditional approaches such as the use <strong>of</strong> layers <strong>of</strong><br />

abstraction <strong>and</strong> middleware less applicable. A more promising approach is to use <strong>for</strong>mal<br />

concurrency models to construct <strong>and</strong> analyze s<strong>of</strong>tware designs, <strong>and</strong> to use s<strong>of</strong>tware synthe-<br />

sis technologies to generate application-specific scheduling <strong>and</strong> execution frameworks that<br />

give designers fine-grained control <strong>of</strong> timing, concurrency, <strong>and</strong> memory usage.<br />

One example <strong>of</strong> this more <strong>for</strong>mal approach are the synchronous languages <strong>for</strong> reactive<br />

systems [9]. Languages such as Esterel [10] allow users to specify a system using the<br />

notion <strong>of</strong> global ticks <strong>and</strong> concurrent zero delay reactions. Their models are specific enough<br />

that the concurrency in the system can be compiled away, <strong>and</strong> the system behaves like a<br />

state machine at run time. Actor-oriented designs, such as those seen in the Ptolemy II<br />

framework [11], integrate a rich set <strong>of</strong> sequential <strong>and</strong> concurrent models, use a system-level<br />

type system to check their composability [28], <strong>and</strong> compile away as much concurrency as<br />

possible to obtain run-time efficiency <strong>and</strong> predictability [12]. These approaches give us a<br />

way to <strong>for</strong>mally coordinate the concurrency inherent in the system.<br />

1 Herlihy proposes a methodology in [19] <strong>for</strong> constructing non-blocking <strong>and</strong> wait-free implementations <strong>of</strong><br />

concurrent objects. Programmers implement data objects as stylized sequential programs, with no explicit<br />

synchronization. Each sequential operation is automatically trans<strong>for</strong>med into a non-blocking or wait-free op-<br />

eration via a collection <strong>of</strong> synchronization <strong>and</strong> memory management techniques. However, operations may<br />

not have any side-effects other than modifying the memory block occupied by the object. This does not ad-<br />

dress the need <strong>for</strong> inter-object communication when composing components. Additionally, this methodology<br />

requires additional memory copying, which may become expensive <strong>for</strong> large objects.<br />

2

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!