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.

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.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!