16.08.2013 Aufrufe

Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...

Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...

Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

6.4. KONTROLLFLUSS IN FUNKTIONALEN DATENNETZEN 145<br />

Nach Beendigung des Funktoraufrufs hat sowohl ËÂ als auch ËÃ den aktuellen Wert. Die<br />

Kontrolle kehrt zur Sequenz ËÂ zurück, <strong>die</strong> nun <strong>die</strong> laufende <strong>Daten</strong>anfrage mit einem internen<br />

Zugriff auf ihre Werteliste befriedigen kann. Wird später im Zyklus auch ËÃ angefordert, kann<br />

der Wert aufgr<strong>und</strong> des bereits erfolgten Aufrufs von ÂÃ sofort zurückgegeben werden.<br />

Durch ein Vertauschen einzelner Eingangs- oder Ausgangsdatensequenzen der Funktoren,<br />

kann sich zwar <strong>die</strong> Reihenfolge der Funktoraufrufe <strong>und</strong> <strong>Daten</strong>aktualisierungen verändern, es<br />

treten aber keine gr<strong>und</strong>sätzlich anderen Konstellationen als <strong>die</strong> zuvor beschriebenen auf.<br />

Es ist offensichtlich, daß Funktoren ohne Ausgangsdaten wie Ë mit <strong>die</strong>sem<br />

Aufrufmechanismus nicht direkt angesprochen werden können. Sie müssen entweder über ihre<br />

Eingangsdaten oder durch einen Agenten getriggert werden. Repräsentiert ein solcher Funktor<br />

einen unabhängigen Verbraucher, kann er auch selber aktiv sein.<br />

Funktoren, <strong>die</strong> wie À ein aktuelles Datum zusammen mit älteren Sequenzwerten der gleichen<br />

Sequenz verarbeiten: ËÀ À Ë <br />

, fügen sich dagegen ohne weiteres in den Mechanismus<br />

ein. Wird À durch seine Ausgangssequenz ËÀ aufgerufen, fordert À von der<br />

Eingangssequenz Ë einen neuen Wert an. Ë wird daraufhin aktualisiert <strong>und</strong> À kann sowohl<br />

auf den aktuellen als auch auf den vorherigen Wert zugreifen.<br />

Asynchrone Ablaufsteuerung<br />

In der anfragegetriebenen Modulsteuerung lassen sich <strong>die</strong> folgenden Relationen asynchron spezifizieren:<br />

Ø Ø , ×Ø <strong>und</strong> ÙÔ . Dabei ist <strong>für</strong> <strong>die</strong> Parallelisierung der verschiedenen<br />

Teilaufgaben des Moduls vor allem <strong>die</strong> Ø Ø -Relation von Bedeutung, da sie es ermöglicht,<br />

mehrere Eingangsdaten eines Funktors nebenläufig in eigenen Threads anzufordern <strong>und</strong> bereitzustellen.<br />

Bei der asynchronen ×Ø -Relation werden <strong>die</strong> von einem Funktor bestimmten<br />

Ausgangsdaten parallel <strong>und</strong> nicht nacheinander gesetzt. Da <strong>die</strong>s allerdings keine rechenintensive<br />

Aufgabe ist, soll an <strong>die</strong>ser Stelle auf <strong>die</strong> Parallelisierung verzichtet werden.<br />

Damit ein Funktor seine Eingangsdaten parallel bestimmen lassen kann, ist eine Zweiteilung<br />

der <strong>Daten</strong>zugriffe notwendig. In einem ersten Schritt werden <strong>die</strong> <strong>Daten</strong> angefordert, wo<strong>für</strong> <strong>die</strong><br />

Ø Ø -Methode asynchron gestartet wird. Die Konrolle kehrt sofort zum Funktor zurück, so<br />

daß <strong>die</strong>se Aktion <strong>für</strong> alle Eingangsdaten wiederholt werden kann. In einem zweiten Schritt<br />

muß nun auf <strong>die</strong> <strong>Daten</strong> gewartet werden. Eine einfache Möglichkeit, <strong>die</strong>s mit den vorgegebenen<br />

Mitteln zu realisieren, ist, unmittelbar nach der Initialisierung aller <strong>Daten</strong>anfragen, <strong>die</strong> Ø Ø -<br />

Methode beginnend beim ersten Eingangsdatum aufzurufen. Da dabei <strong>die</strong> Synchronisation der<br />

Eingangsdaten über <strong>die</strong> Ø Ø -Methode in Verbindung mit dem Eintragen der <strong>Daten</strong> in <strong>die</strong><br />

Sequenz, nicht jedoch über das Ende der Aktualisierungsanforderung ÐÐ erfolgt, bringt es<br />

keinen Vorteil, den Funktoraufruf in einem eigenen Thread zu starten, d.h. <strong>die</strong> ÙÔ -Relation<br />

asynchron zu spezifizieren. Abb. 6.39 zeigt einen möglichen Kontrollfluß, wobei hier nur <strong>die</strong><br />

Ø Ø -Methode asynchron aufgerufen wird.<br />

Auch hier können sich aufgr<strong>und</strong> unterschiedlicher Operatorlaufzeiten <strong>die</strong> verschiedenen<br />

Methodenaufrufe gegeneinander verschieben oder Aktionen zusammenfallen, <strong>die</strong> bei einer synchronen<br />

Ansteuerung streng sequentiell abgearbeitet werden. Um <strong>die</strong> Konsistenz der <strong>Daten</strong><br />

<strong>und</strong> der Programmsteuerung zu gewährleisten, stellt sich damit wiederum <strong>die</strong> Frage, nach dem<br />

Schutz einzelner Aktionen oder <strong>Daten</strong>bereiche gegen eine parallele Bearbeitung sowie der Garantie<br />

von Aufrufreihenfolgen, um bestehende Abhängigkeiten bei der <strong>Daten</strong>verarbeitung <strong>und</strong><br />

der Steuerung zu berücksichtigen.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!