14.01.2015 Aufrufe

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

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.

5 Kontroll- und Verwaltungsschicht<br />

Da sich die Klassendaten nur beim H<strong>in</strong>zufügen neuer Klassen verändern und das im Allgeme<strong>in</strong>en<br />

nur selten stattf<strong>in</strong>det, kann e<strong>in</strong>e Kopie der Klassendaten am Verwalterknoten gehalten werden, die<br />

bei e<strong>in</strong>er Veränderung aktualisiert wird. Dadurch kann man flexibel Dienste verschieben, ohne jedes<br />

Mal auch die Daten verschieben zu müssen. Generelles Ziel sollte es se<strong>in</strong>, viele Daten nur auf dem<br />

Verwalterknoten vorzuhalten.<br />

Der genaue Aufbau der Daten ist von der tatsächlichen Realisierung der virtuellen Masch<strong>in</strong>e<br />

abhängig. Dennoch kann man sie <strong>in</strong> grundlegende Bauste<strong>in</strong>e e<strong>in</strong>teilen. Diese sollen im Folgenden<br />

vorgestellt werden. Dabei wird auf die Nutzung und Varianten e<strong>in</strong>gegangen.<br />

5.4.10.1 Typhierarchie<br />

Die Typhierarchie gibt Auskunft über die Beziehungen zwischen den Klassen und Typen. Sie wird<br />

von der Typprüfung verwendet, um Untertypen zu identifizieren. Daher orientiert sich der tatsächliche<br />

Aufbau der Typ<strong>in</strong>formationen an diesem Dienst. Veränderungen und Optimierungen der Typprüfung<br />

haben somit Auswirkungen auf den Aufbau der Typhierarchie und umgekehrt. E<strong>in</strong>e optimierte Typprüfung<br />

kann die Typhierarchie kompakt speichern, da zur Laufzeit nicht der vollständige Typenbaum<br />

nachvollziehbar se<strong>in</strong> muss.<br />

5.4.10.2 Objekt- und Klassenstrukturbeschreibung<br />

Die Objektstrukturbeschreibung gibt für jede Klasse die Felder e<strong>in</strong>es Objekts dieser Klasse an. Jedes<br />

Feld wird durch se<strong>in</strong>en Namen, Typ und Zugriffsrechte beschrieben. Die Klassenstrukturbeschreibung<br />

ist die entsprechende Beschreibung für Klassen. Hier s<strong>in</strong>d Namen, Typ und Zugriffsrechte der<br />

Klassenvariablen abgelegt.<br />

Die Struktur wird von der Objekt- beziehungsweise Klassenlayoutverwaltung verwendet, welche<br />

festlegen, wie die e<strong>in</strong>zelnen Felder im Speicher repräsentiert werden. Die Typen der Felder werden<br />

zum Beispiel von der Speicherbere<strong>in</strong>igung benötigt, um Referenzen <strong>in</strong> Objekten zu identifizieren.<br />

Da die Layoutverwaltung meistens implizit vorliegt, werden die Strukturbeschreibungen zur Laufzeit<br />

nicht direkt von der Anwendung benötigt. Die Informationen, um auf Objekt- und Klassenvariablen<br />

zuzugreifen, können bereits während des B<strong>in</strong>dens <strong>in</strong> den Code e<strong>in</strong>gefügt werden. Es gibt jedoch e<strong>in</strong>ige<br />

Dienste, welche die Strukturbeschreibungen zur Laufzeit benötigen: die Speicherbere<strong>in</strong>igung und das<br />

Laufzeittypsystem. Wird das Laufzeittypsystem nicht verwendet, so können die Strukturbeschreibungen<br />

zusammen mit der Speicherbere<strong>in</strong>igung ausgelagert werden.<br />

5.4.10.3 Methodentabellen<br />

Die Methodentabellen enthalten Informationen, um festzustellen, welche Implementierung beim Aufruf<br />

e<strong>in</strong>er Methode verwendet wird. Dies ist besonders bei Objekten von abgeleiteten Klassen notwendig, da<br />

hier erst zur Laufzeit anhand des dynamischen Typs entschieden werden kann, welche Implementierung<br />

verwendet werden muss.<br />

Der tatsächliche Aufbau der Methodentabelle hängt stark von der Realisierung der Ausführungse<strong>in</strong>heit<br />

ab. E<strong>in</strong>e e<strong>in</strong>fache Realisierung listet für jede Klasse die dazugehörenden Methodenimplementierungen<br />

auf, wobei Methoden mit derselben Signatur denselben Index <strong>in</strong> der Tabelle bekommen.<br />

Ist das Nachladen neuer Klassen zur Laufzeit nicht vorgesehen, so können die Methodentabellen<br />

weitestgehend vere<strong>in</strong>facht werden, da sie nur für Typen benötigt werden, welche überschriebene<br />

Methoden besitzen. Für Methoden, die nicht überschrieben werden, kann der B<strong>in</strong>der direkt die richtige<br />

und e<strong>in</strong>zige vorhandene Implementierung wählen. Wird jedoch die Typhierarchie verändert, so müssen<br />

die Methodentabellen und der Code neu erstellt beziehungsweise gebunden werden.<br />

124

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!