23.08.2013 Views

Specification of Reactive Hardware/Software Systems - Electronic ...

Specification of Reactive Hardware/Software Systems - Electronic ...

Specification of Reactive Hardware/Software Systems - Electronic ...

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.

6.2 Concurrency and Synchronisation 149<br />

We defined process objects as entities that can perform their behaviour concurrently to<br />

each other: Process objects can model concurrent independent system parts (connected<br />

in a static channel structure). The internal behaviour <strong>of</strong> process objects is sequential.<br />

Collaborating data objects perform sequential behaviour. They model passive entities that<br />

must be activated by a message. Only one data object from a collection <strong>of</strong> collaborating<br />

data objects is actively processing. Together with a message the thread <strong>of</strong> activity goes<br />

from sender to receiver.<br />

In general, collaborating data objects model a part <strong>of</strong> the internal sequential behaviour<br />

<strong>of</strong> a process object. Two data objects that belong to two different process objects can<br />

operate concurrently. These objects are completely independent and cannot directly<br />

communicate with each other.<br />

A cluster is an abstraction boundary around a group <strong>of</strong> collaborating process objects and<br />

clusters. In contrast to process objects, clusters can have internally concurrent behaviour.<br />

Internally concurrent behaviour is specified in a cluster class by a parallel composition<br />

<strong>of</strong> processes and clusters (subsystems). The internal concurrency <strong>of</strong> a cluster is solely<br />

established by its process objects.<br />

Clusters can be used to specify whether the internal behaviour <strong>of</strong> a subsystem is sequential<br />

or concurrent. Such a cluster is defined to be a concurrency boundary. This<br />

is an enclosure that prescribes that the cluster has an internal sequential behaviour (see<br />

Paragraph 5.8.2.4). This means that collaborating processes inside the boundary form<br />

a composite that must be modelled such that it performs a sequential behaviour. This<br />

requirement determines the behaviour style <strong>of</strong> the individual processes. This style is determined<br />

by the sort <strong>of</strong> communication and synchronisation that must be used to specify<br />

the behaviour <strong>of</strong> these processes. A subsystem that must be implemented sequentially<br />

can have only one process active simultaneously. In that case the whole subsystem has<br />

only one internal thread <strong>of</strong> activity. Synchronisation between objects in such a subsystem<br />

implies that process objects pass the thread <strong>of</strong> activity together with the message,<br />

just like data objects do.<br />

6.2.2.2 Asynchronous Concurrency<br />

By defining process objects as independent concurrent entities, we appealed to a general<br />

intuition <strong>of</strong> concurrency, which is so-called asynchronous concurrency. This form <strong>of</strong><br />

concurrency enables processes to be independent in time. Processes are defined to be<br />

asynchronous concurrent if they perform their actions at their own speed. This approach<br />

is natural for distributed systems that are implemented by a collection <strong>of</strong> interconnected<br />

processing elements that may run at different internal speeds.<br />

The intuitive notion <strong>of</strong> concurrency takes time into account. Two operations, in two<br />

different process objects, are thought to take time to be completed. Concurrent operation<br />

means that both operations run simultaneously, at least during some period <strong>of</strong> time. The

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

Saved successfully!

Ooh no, something went wrong!