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.5 Anwendungsbeispiel KESO<br />

wird mithilfe des KESO-Compilers neuer Anwendungscode erzeugt, der die neue Klasse enthält und<br />

berücksichtigt. Anschließend untersucht der Verwalter, welche Teile des Codes sich verändert haben.<br />

Dann wird der alte Code durch den neuen ausgetauscht. Der Zustand des Systems bleibt dabei zunächst<br />

erhalten und wird <strong>in</strong> e<strong>in</strong>em zweiten Schritt angepasst.<br />

Durch den statischen Ansatz s<strong>in</strong>d viele Datenstrukturen des Systems konstant und werden wie Code<br />

ausgetauscht. Um Veränderungen an der Objektstruktur festzustellen, wird der Aufbau der Datentypen<br />

untersucht. Hat sich die Struktur der Objekte verändert, so werden alle Objekte angepasst. Für die<br />

Anpassung der Objektstruktur muss e<strong>in</strong>e spezielle Konvertierungsfunktion am Verwalter vorhanden<br />

se<strong>in</strong>, <strong>in</strong> der spezifisches Wissen über die Vorgehensweise des KESO-Systems enthalten ist.<br />

Neben solchen grundlegenden Änderungen kann das System auch um Dienste erweitert werden, die<br />

KESO nicht anbietet. Beispielsweise bietet KESO ke<strong>in</strong>e Möglichkeit an, Informationen über die Typen<br />

zur Laufzeit abzufragen. E<strong>in</strong> Laufzeittypsystem lässt sich jedoch gut als externer Dienst bereitstellen.<br />

Da nicht alle benötigten Klassendaten explizit im erzeugten C-Code vorhanden s<strong>in</strong>d, kann der KESO-<br />

Compiler zusätzliche Tabellen mit den vollständigen Klassen<strong>in</strong>formationen erstellen. Auf dieser Basis<br />

können Anfragen über den Aufbau der Typen vom Verwalter beantwortet werden.<br />

Anpassen existierender Funktionen<br />

Am KESO-System kann auch das dynamische Austauschen von Bauste<strong>in</strong>en vorgestellt werden. Als<br />

Beispiel dient hierbei der Scheduler, der von der zugrunde gelegten Betriebssystembibliothek bereitgestellt<br />

wird. Zur Demonstration wurde die Betriebssystembibliothek JOSEK betrachtet, die Teil des<br />

KESO-Projekts ist und als Anpassungsschicht an andere Betriebssysteme dient. Diese Schicht enthält<br />

e<strong>in</strong>en generischen, prioritätengesteuerten Scheduler, zu dem als Alternative e<strong>in</strong> spezialisierter Scheduler<br />

erstellt wurde, welcher nur zwei Threads unterstützt. Durch die Optimierung kann die Verwaltung der<br />

Prioritäten stark e<strong>in</strong>geschränkt werden, da die beiden Threads immer nur abwechselnd laufen können.<br />

Daher wurde auch die Threadsteuerung entsprechend vere<strong>in</strong>facht. Der Verwalter <strong>in</strong>tegriert nun bei der<br />

Erstellung des <strong>in</strong>itialen Abbildes e<strong>in</strong>e Unterstützungsfunktion, die ihn benachrichtigt, sobald e<strong>in</strong> dritter<br />

Task aktiviert wird. Zu diesem Zeitpunkt wird die spezialisierte Version gegen die generische Version<br />

ausgetauscht. Bei der Installation des generischen Schedulers muss darauf geachtet werden, dass die<br />

Datenstrukturen mit dem aktuellen Zustand <strong>in</strong>itialisiert werden. Dazu wurde e<strong>in</strong>e spezielle Funktion<br />

am Verwalter implementiert, welche die Bedeutung der Datenfelder kennt und ihren Wert entsprechend<br />

dem aktuellen Zustand setzt. Tabelle 5.3 zeigt den Speicherbedarf des ursprünglichen Schedulers und<br />

der Spezialversion.<br />

KESO Scheduler .text .rodata .data .bss Total<br />

für zwei Threads optimiert 780 280 61 0 1121 Byte<br />

generisch, prioritätengesteuert 1402 392 62 20 1876 Byte<br />

Tabelle 5.3: Speicherbedarf von verschiedenen Threadverwaltungen für KESO<br />

Die Tabelle zeigt die Größen des Schedulers und der Threadsteuerung für KESO <strong>in</strong> zwei Varianten. Die Werte wurden<br />

an e<strong>in</strong>er x86-Version von KESO ermittelt, da sich die Version für AVR-Mikrocontroller zum Zeitpunkt der Messungen<br />

(Mai 2008) noch im Aufbau bef<strong>in</strong>det.<br />

E<strong>in</strong> weiteres Beispiel ist die Speicherbere<strong>in</strong>igung. KESO bietet zwei Varianten an. E<strong>in</strong>en e<strong>in</strong>fachen<br />

“mark-and-sweep” Garbage Collector, der exklusiv laufen muss und e<strong>in</strong>e <strong>in</strong>krementelle Version, die<br />

mithilfe von Schreibbarrieren e<strong>in</strong> konsistentes Bild des Objektgraphen aufbaut. In Tabelle 5.4 s<strong>in</strong>d die<br />

Größen der beiden Varianten aufgezeigt.<br />

127

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!