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

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

5.4 E<strong>in</strong>e JVM als Baukasten<br />

5.4.10.4 Methodenimplementierungen<br />

Die Methodenimplementierungen stellen den Code der Methoden dar. Je nach Art der Ausführungse<strong>in</strong>heit<br />

kann der Code <strong>in</strong> verschiedenen Formaten vorliegen. Für e<strong>in</strong>en Interpreter muss der Java-Bytecode<br />

verfügbar se<strong>in</strong>. Bei Verwendung e<strong>in</strong>es AOT-Compilers wird der Bytecode bereits <strong>in</strong> architekturspezifischem<br />

Masch<strong>in</strong>encode übersetzt vorliegen. Wird e<strong>in</strong> JIT-Compiler verwendet, so kann e<strong>in</strong>e Mischung<br />

aus beidem abgelegt se<strong>in</strong>.<br />

Bei e<strong>in</strong>em compilerbasierten Verfahren können selten benutzten Methoden geparkt werden. Bei<br />

e<strong>in</strong>em <strong>in</strong>terpreterbasierten Verfahren ist das nicht möglich, da die Methodenimplementierungen nicht<br />

direkt ausgeführt werden, sondern Daten des Interpreters darstellen.<br />

5.4.10.5 Methodensignaturen<br />

Die Methodensignaturen stellen Typ<strong>in</strong>formationen zu den Methoden bereit. Sie enthalten zu jeder<br />

Methode den Namen, die Anzahl und Typen der Parameter sowie den Typ des Rückgabewertes. Auch<br />

Zugriffsrechte s<strong>in</strong>d hier vermerkt. Die Signaturen werden hauptsächlich vom B<strong>in</strong>der benötigt, um<br />

Aufrufe von Methoden auflösen zu können. Wenn das B<strong>in</strong>den nicht zur Laufzeit, sondern schon vor<br />

dem Starten durchgeführt wird, werden die Signaturen nur noch durch das Laufzeittypsystem benötigt,<br />

falls e<strong>in</strong>e Methode mit e<strong>in</strong>em zur Laufzeit ermittelten Namen angesprochen werden soll.<br />

5.4.10.6 Ausnahmebehandlungstabellen<br />

Die Ausnahmebehandlungstabellen beschreiben die <strong>in</strong> den Methoden enthaltenen Ausnahmebehandlungen.<br />

Für jede Methode, <strong>in</strong> der e<strong>in</strong>e Ausnahmebehandlungsfunktion implementiert ist, s<strong>in</strong>d hier<br />

Informationen zu f<strong>in</strong>den, welcher Ausnahmetyp behandelt wird und welcher Codeabschnitt dadurch<br />

abgedeckt ist. Die Ausnahmeverarbeitung benötigt diese Tabellen, um beim Auftreten e<strong>in</strong>er Ausnahme<br />

die entsprechende Behandlungsfunktion zu suchen. Da diese Tabellen von ke<strong>in</strong>em anderen Dienst<br />

benötigt werden, können sie zusammen mit der Ausnahmeverarbeitung ausgelagert werden.<br />

Darüber h<strong>in</strong>aus kann man Teile der Ausnahmebehandlungstabelle entfernen, wenn man die Implementierung<br />

von Methoden auslagert, da die Informationen zum Auff<strong>in</strong>den von Behandlungsfunktionen<br />

nur für aktive Funktionen benötigt werden.<br />

5.4.11 Ergebnisse<br />

In diesem Abschnitt wurden verschiedene Komponenten e<strong>in</strong>e JVM als Bauste<strong>in</strong>e identifiziert. Dabei<br />

wurde untersucht, ob sie als entfernter Dienst erbracht werden können.<br />

Besonders zur Auslagerung geeignet s<strong>in</strong>d der Klassenlader und die Codevorbereitung, da zum e<strong>in</strong>en<br />

Klassen selten h<strong>in</strong>zugefügt werden und zum zweiten die Klassendateien meist ohneh<strong>in</strong> von außen<br />

zugeführt werden. Demnach können die Daten auch extern vorbereitet werden, um sie anschließend im<br />

passenden Format ohne weitere Änderung <strong>in</strong> das System zu <strong>in</strong>tegrieren.<br />

Außer der Codevorbereitung bieten sich auch die Threaderzeugung und die Ausnahmebehandlung<br />

zur Auslagerung an. Diese Dienste werden ebenfalls eher selten genutzt und ohne Ausnahmebehandlung<br />

müssen auch die Ausnahmebehandlungstabellen nicht auf dem Knoten vorhanden se<strong>in</strong>. Als letzter<br />

vielversprechender Bauste<strong>in</strong> wurde die Speicherbere<strong>in</strong>igung identifiziert, die durch das Auslagern<br />

parallel zum Ablauf auf dem Knoten durchgeführt werden kann.<br />

Weiterh<strong>in</strong> wurden <strong>in</strong> diesem Abschnitt Bauste<strong>in</strong>e auf mögliche Varianten untersucht. Für die Speicherbere<strong>in</strong>igung<br />

wurden verschiedene Vorgehen mit ihren Vor- und Nachteilen vorgestellt. Auch können<br />

optimierte Versionen von Threadsteuerung und Scheduler e<strong>in</strong>gesetzt werden.<br />

125

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!