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 />

Zudem wurden Optimierungen angesprochen, die durch e<strong>in</strong>e globale Sicht auf die vorhandenen Typen<br />

vorgenommen werden können. Unter der Annahme, dass dem System ke<strong>in</strong> neuer Code h<strong>in</strong>zugefügt<br />

wird, lassen sich das Objektlayout, die Typprüfung und die Methodentabellen optimieren.<br />

5.5 Anwendungsbeispiel KESO<br />

Als nächster Schritt sollen e<strong>in</strong>ige der Unterstützungsmöglichkeiten auf e<strong>in</strong> reales Java-System angewandt<br />

werden, um die Anwendbarkeit der vorgestellten Konfigurationsmöglichkeiten zu demonstrieren.<br />

Im Rahmen dieser Arbeit wurden nicht alle Unterstützungsmöglichkeiten vollständig realisiert. Die<br />

Umsetzung e<strong>in</strong>iger Beispiele wurde sorgfältig geprüft und soweit durchgeführt, dass entweder auftretende<br />

Probleme identifiziert werden konnten oder man mit ausreichender Sicherheit feststellen konnte,<br />

dass e<strong>in</strong>e Realisierung möglich ist. Hier sollen e<strong>in</strong>ige Ideen und Ergebnisse vorgestellt werden.<br />

Die grundsätzliche Herangehensweise wurde bereits <strong>in</strong> Abschnitt 5.3.3 vorgestellt: Man nutzt e<strong>in</strong>e<br />

statisch optimierte und angepasste Java-Umgebung und erweitert sie mithilfe e<strong>in</strong>es Verwalters um<br />

dynamische Fähigkeiten. Man erhält e<strong>in</strong> ressourcensparendes System, welches ke<strong>in</strong>e Bauste<strong>in</strong>e zur<br />

Codevorbereitung auf dem Gerät selbst enthält und trotzdem die Möglichkeit hat, dynamisch Klassen<br />

nachzuladen oder Informationen über die vorhandenen Klassen zur Laufzeit abzufragen.<br />

Die anwendungsspezifische Java-Umgebung KESO<br />

Als Basis eignet sich hier das Java-System KESO [WSSP07]. Wie bereits <strong>in</strong> Abschnitt 5.3.2.2 dargestellt<br />

wurde, handelt es sich dabei um e<strong>in</strong>e anwendungsspezifische Java-Laufzeitumgebung, die den Java-<br />

Bytecode <strong>in</strong> C-Code umwandelt, um diesen anschließend mit e<strong>in</strong>em herkömmlichen Compiler zu<br />

übersetzen und mit e<strong>in</strong>er Betriebssystembibliothek zusammenzub<strong>in</strong>den.<br />

Bei der Umsetzung <strong>in</strong> C-Code wird zusätzlich zur Anwendung auch der Code der virtuellen Masch<strong>in</strong>e<br />

erzeugt. Dabei wird von e<strong>in</strong>em statischen System ausgegangen, zu dem ke<strong>in</strong>e Klassen dynamisch<br />

h<strong>in</strong>zugeladen werden können. Daher kennt der Compiler alle Klassen, aus denen die Anwendung<br />

aufgebaut ist, und kann auf dieser Basis globale Optimierungen anwenden, die bei der Betrachtung<br />

e<strong>in</strong>zelner Klassen nicht möglich wären.<br />

So werden zum Beispiel konstante Klassendaten direkt <strong>in</strong> den generierten Code e<strong>in</strong>gefügt. Beim<br />

Aufruf der Objekterzeugung muss dann nicht erst die Größe des Objekts aus den Klassendaten<br />

ausgelesen, sondern kann direkt als konstanter Parameter für den Aufruf verwendet werden. Wenn<br />

die Objektgröße ansonsten nicht mehr benötigt wird, ist es möglich die Klassendaten entsprechend zu<br />

reduzieren. KESO wendet noch weitere Optimierungen an, die jedoch nicht Bestandteil dieser Arbeit<br />

s<strong>in</strong>d und daher auch nicht im Detail betrachtet werden sollen.<br />

Als Ausgangsbasis der Verwaltung dient der erzeugte C-Code. Hier s<strong>in</strong>d bereits alle Optimierungen<br />

des KESO-Compilers enthalten und sowohl die Anwendung als auch die Betriebssystembibliothek<br />

liegen <strong>in</strong> e<strong>in</strong>em e<strong>in</strong>heitlichen Format vor. Der Verwalter kann nun vorhandene Funktionalität dynamisch<br />

verändern und anpassen, er kann aber auch komplett neue Funktionalität anbieten.<br />

Neue Funktionen durch e<strong>in</strong>en Verwalter<br />

Mithilfe e<strong>in</strong>es Verwalters kann das dynamische Nachladen von Code unterstützt werden. Das KESO-<br />

System verfügt über ke<strong>in</strong>en Klassenlader, da das H<strong>in</strong>zufügen neuer Klassen dem statischen Ansatz<br />

widersprechen würde. Der Verwalter kann diese Aufgabe jedoch übernehmen. Beim H<strong>in</strong>zuladen neuer<br />

Klassen muss allerd<strong>in</strong>gs geprüft werden, ob die Optimierungen noch gültig s<strong>in</strong>d, gegebenenfalls<br />

muss betroffener Code ausgetauscht werden. Der grundlegende Ablauf ist daher wie folgt: Zunächst<br />

126

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!