7.3.3 Dataflow-Style Language: TinyGALS
Dataflow languages [3] are intuitive for expressing computation on
interrelated data units by specifying data dependencies among them.
A dataflow program has a set of processing units called actors. Actors
have ports to receive and produce data, and the directional connections
among ports are FIFO queues that mediate the flow of data.
Actors in dataflow languages intrinsically capture concurrency in a
system, and the FIFO queues give a structured way of decoupling
their executions. The execution of an actor is triggered when there
are enough input data at the input ports.
Asynchronous event-driven execution can be viewed as a special
case of dataflow models, where each actor is triggered by every incoming
event. The globally asynchronous and locally synchronous (GALS)
mechanism is a way of building event-triggered concurrent execution
from thread-unsafe components. TinyGALS is such a language
for TinyOS.
One of the key factors that affects component reusability in
embedded software is the component composability, especially concurrent
composability. In general, when developing a component,
a programmer may not anticipate all possible scenarios in which
the component may be used. Implementing all access to variables
as atomic blocks incurs too much overhead. At the other extreme,
making all variable access unprotected is easy for coding but certainly
introduces bugs in concurrent composition. TinyGALS addresses
concurrency concerns at the system level, rather than at the component
level as in nesC. Reactions to concurrent events are managed
by a dataflow-style FIFO queue communication.
7.3.3 Dataflow-Style Language: TinyGALS
Dataflow languages [3] are intuitive for expressing computation on
interrelated data units by specifying data dependencies among them.
A dataflow program has a set of processing units called actors. Actors
have ports to receive and produce data, and the directional connections
among ports are FIFO queues that mediate the flow of data.
Actors in dataflow languages intrinsically capture concurrency in a
system, and the FIFO queues give a structured way of decoupling
their executions. The execution of an actor is triggered when there
are enough input data at the input ports.
Asynchronous event-driven execution can be viewed as a special
case of dataflow models, where each actor is triggered by every incoming
event. The globally asynchronous and locally synchronous (GALS)
mechanism is a way of building event-triggered concurrent execution
from thread-unsafe components. TinyGALS is such a language
for TinyOS.
One of the key factors that affects component reusability in
embedded software is the component composability, especially concurrent
composability. In general, when developing a component,
a programmer may not anticipate all possible scenarios in which
the component may be used. Implementing all access to variables
as atomic blocks incurs too much overhead. At the other extreme,
making all variable access unprotected is easy for coding but certainly
introduces bugs in concurrent composition. TinyGALS addresses
concurrency concerns at the system level, rather than at the component
level as in nesC. Reactions to concurrent events are managed
by a dataflow-style FIFO queue communication.
การแปล กรุณารอสักครู่..
