Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...
Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...
Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
122 KAPITEL 6. FUNKTIONALE BESCHREIBUNG VON BILDFOLGENPROGRAMMEN<br />
(virtuellen) Prozessor — gestartet. Zum Abschluß einer Operation werden eventuelle Folgeoperationen<br />
angestoßen <strong>und</strong> der eigene Programmzweig beendet. Dies hat den Vorteil, daß sich<br />
<strong>die</strong> Parallelisierung automatisch, ohne eine planende Instanz ergibt, <strong>und</strong> der Kontrollfluß sich<br />
selbsttätig einem wechselnden Ressourcenangebot anpassen kann.<br />
Methodenmodell <strong>für</strong> nebenläufiges Arbeiten: Im Gegensatz zu einer vollständig synchronen<br />
Modulsteuerung wird im asynchronen Fall <strong>die</strong> Aufrufreihenfolge nicht mehr allein<br />
durch das Netzdesign bestimmt, <strong>und</strong> <strong>die</strong> Methodenaufrufe sind nicht an wenige bestimmte, genau<br />
definierte Objektzustände gekoppelt. Verschiedene Aktionen laufen parallel ab, dabei kann<br />
<strong>die</strong> Rechenzeit der Funktoren verfahrensbedingt <strong>und</strong> in Abhängigkeit von den zu verarbeitenden<br />
<strong>Daten</strong>, aber auch durch Prozeßwechsel <strong>und</strong> schwankende Ressourcenauslastung von Zyklus<br />
zu Zyklus variieren. Welche Operationen dabei zuerst beendet werden, in welcher Reihenfolge<br />
nachfolgende Operationen aufgerufen werden <strong>und</strong> welchen Status schließlich <strong>die</strong> beteiligten<br />
Objekte beim Aufruf einer Operation haben, ist anders als bei der synchronen Ablaufsteuerung<br />
daher nicht deterministisch. Das bedeutet, daß während jeder laufenden Aktion beliebige neue<br />
Methoden aufgerufen werden können.<br />
Um <strong>die</strong> Konsistenz der <strong>Daten</strong>, aber auch der Programmsteuerung sicherzustellen, sind spezielle<br />
Mechanismen notwendig, <strong>die</strong> zum einen verhindern, daß sich verschiedene Aktionen<br />
gegenseitig behindern, <strong>die</strong> zum anderen aber auch eine Aufrufreihenfolge garantieren, <strong>die</strong> <strong>die</strong><br />
konsistente Steuerung des <strong>Daten</strong>flußgraphen erlaubt. Im einzelnen müssen dabei <strong>die</strong> folgenden<br />
Konsistenzforderungen beachtet werden:<br />
<strong>Daten</strong>konsistenz: Während der Modifikation einer Gruppe zusammengehöriger <strong>Daten</strong> dürfen<br />
keine weiteren Zugriffe auf <strong>die</strong>se <strong>Daten</strong> stattfinden.<br />
Zustandskonsistenz: Die Auswahl einer Aktion muß auf einer konsistenten Analyse des Objektzustandes<br />
erfolgen, wo<strong>für</strong> <strong>die</strong>se nicht durch andere Zugriffe auf <strong>die</strong> Zustandsgrößen<br />
unterbrochen werden darf.<br />
Verklemmungsfreiheit: Aktionen dürfen sich nicht wechselseitig blockieren <strong>und</strong> so zu Verklemmungen<br />
führen.<br />
Erreichbarkeit: Der Abbruch einer Aktion darf nicht zur Folge haben, daß <strong>die</strong>se im aktuellen<br />
Zyklus überhaupt nicht ausgeführt wird.<br />
Es lassen sich noch zwei weitere Konsistenzkriterien formulieren, auf deren strikte Einhaltung<br />
hier jedoch verzichtet werden kann. Das liegt zum einen daran, daß auf der einen Seite ein<br />
Verstoß dagegen nur sehr unwahrscheinlich ist <strong>und</strong> zudem leicht erkannt werden kann, andererseits<br />
aber das garantierte Einhalten der Forderung einen sehr hohen Aufwand — etwa einem<br />
lokalen Scheduler <strong>für</strong> jedes Objekt oder den Einsatz eines <strong>Echtzeit</strong>betriebssystems — bedeuten<br />
würde. Sie werden damit als schwache Konsistenzforderungen formuliert, wobei Verstöße<br />
gegen sie durch einen Statustest erkannt werden <strong>und</strong> eine entsprechenden Reaktion nach sich<br />
ziehen können.<br />
Zykluskonsistenz: Zyklen sollten möglichst in der richtigen zeitlichen Reihenfolge abgearbeitet<br />
werden, d.h. ein Zyklus, der deutlich weniger Rechenzeit benötigt als der vorhergehende,<br />
sollte <strong>die</strong>sen nicht „überholen“: Prinzipiell erlaubt das Sequenzmodell zwar auch<br />
das Einfügen älterer Werte in <strong>die</strong> Liste, unter Umständen kann das allerdings zu inkonsistenten<br />
Zugriffen auf alte Werte führen.