mfsm || glossary

Alexandre R.J. François
arjf © 2001-2010

Last update: 14 October 2010

active Pulse

A pulse carrying volatile data. Active pulses flow down streams.


Processing unit in the SAI architectural style. A cell must be connected to exacly one repository for persistent shared memory access. A cell can be connected to exactly one upstream cell and an arbitrary number of downstream cells. Incoming active pulses are processed in parallel, asynchronously. The processing may result in the augmentation of the active pulse and/or update of the passive pulse. A cell is logically defined by its active and passive filters and its output.


A filter is an object that specifies a node type, a node name and eventual sub-filters corresponding to sub-nodes. The filter composition hierarchy is isomorphic to its target node structure.
Notation: nested square brackets, e.g.: [NODE_TYPE_ID "Node name" handle_string_id [...] ... ]; the handle ID string is optional; a star denotes an optional filter, e.g. [NODE_TYPE_ID "Node name" handle_string_id]*

flow scheduling framework (fsf)

The Flow Scheduling Framework is an extensible set of classes that provide code support for the architectural abstractions defined by the SAI architectural style.


A handle is a pointer to a node in a pulse. Handles can be organized in composition hierarchies isomorphic to filter and node structures. A handle or composition hierarchy of handles is formed as the result of the filtering of a pulse's structure.


A module is a set of cells and nodes which together implement a given functionality (or by extension a set of related functionalities).


Nodes are atomic data units. Data nodes in pulse structures are instances of a node type and have a unique name. The nodes constitute an extensible set of atomic data units that implement or encapsulate specific data structures.
Notation: nested parentheses, e.g.: (NODE_TYPE_ID "Node name" (...) ... )

passive pulse

Pulse that encodes the state of persistent data in the application. Passive pulses are stored in repositorys. For example, process parameters must be persistent during the execution of the application: they must therefore be stored in a repository, as part of a passive pulse.


A pulse is a data structure holding synchronous nodes. Pulses have a time stamp. Information in a pulse is organized as a mono-rooted composition hierarchy of nodes, referred to as the pulse structure.


Shared memory repository in the SAI architectural style. A repository can be connected to an arbitrary number of cells which are then allowed concurrent data access to the data held by the repository (passive pulse).


The signature of a node instance is a unique identifier, combination of the node type and the instance name. It is used for run-time target node binding in filtering operations.


A stream represents one or several synchronized multimedia objects. Streams carry volatile data in active pulses. For example, the frames captured by a video camera do not necessarily need to remain in the application space after they have been processed: they are volatile data. Persistent data is stored in repositorys.

arjf © 2001-2010