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.

4 Basisschicht e<strong>in</strong>es Verwalters<br />

3. Gleichzeitig oder anschließend müssen auch die Abhängigkeiten der Module vone<strong>in</strong>ander<br />

bestimmt und vermerkt werden.<br />

Je nach Ausgangsformat s<strong>in</strong>d die e<strong>in</strong>zelnen Schritte mehr oder weniger aufwendig. Bei der Verwendung<br />

von B<strong>in</strong>ärdateien muss man e<strong>in</strong>ige Anforderungen stellen, um die gewünschten Informationen aus dem<br />

Ausgangsmaterial extrahieren zu können:<br />

Relokierbarkeit. Die endgültige Position e<strong>in</strong>es Moduls im Speicher muss noch veränderbar se<strong>in</strong>, das<br />

heißt, der b<strong>in</strong>äre Code des Moduls darf nicht bereits auf e<strong>in</strong>e endgültige Adresse festgelegt<br />

se<strong>in</strong>. Ansonsten kann man e<strong>in</strong>zelne Module nicht mehr flexibel h<strong>in</strong>zufügen, außerdem wäre<br />

die Aufteilung und effiziente Verwendung des vorhandenen Adressbereichs stark e<strong>in</strong>geschränkt.<br />

Folglich wäre man auch beschränkt <strong>in</strong> der Auswahl und Komb<strong>in</strong>ation der e<strong>in</strong>zelnen Module.<br />

Granularität. Je nach gewünschter Granularität der Modularisierung muss es möglich se<strong>in</strong>, die Struktur<strong>in</strong>formationen<br />

aus der B<strong>in</strong>ärdatei zu extrahieren. Um die Struktur e<strong>in</strong>er Software auf Funktionsebene<br />

zu extrahieren, benötigt man fe<strong>in</strong>granular aufgeteilte B<strong>in</strong>ärdateien. Diese lassen sich<br />

automatisch erstellen, jedoch s<strong>in</strong>d bestimmte E<strong>in</strong>stellungen zum Übersetzen notwendig, die<br />

nicht immer standardmäßig angewandt werden. Man kann somit nicht beliebige B<strong>in</strong>ärdateien<br />

verwenden, sondern muss sie speziell für diesen E<strong>in</strong>satz vorbereiten. Details zu diesem Problem<br />

und e<strong>in</strong> Lösungsansatz werden <strong>in</strong> Abschnitt 4.2.5 vorgestellt.<br />

Debug<strong>in</strong>formationen. Um Module als entfernten Dienst anzubieten, s<strong>in</strong>d detaillierte Informationen<br />

über ihre Schnittstelle erforderlich. Für die normale Verarbeitung des B<strong>in</strong>ärcodes s<strong>in</strong>d diese<br />

Informationen jedoch nicht nötig, weshalb sie im B<strong>in</strong>ärcode auch nicht mehr vorhanden s<strong>in</strong>d. Um<br />

dennoch Informationen über die Schnittstellen zu erhalten, muss man zusätzliche Informationsquellen<br />

nutzen. E<strong>in</strong> möglicher Weg ist die Verwendung von ausführlichen Debug<strong>in</strong>formationen,<br />

die von vielen Compilern automatisch erzeugt werden können. Sie enthalten, je nach Format,<br />

die gewünschten Typ<strong>in</strong>formationen über die Schnittstellen der Funktionen. Zu beachten ist<br />

allerd<strong>in</strong>gs, dass die Debug<strong>in</strong>formationen zwar automatisch erzeugt werden können, dies jedoch<br />

beim Übersetzungsvorgang explizit ausgewählt werden muss.<br />

Die Verwendung von B<strong>in</strong>ärcode als Ausgangsbasis der Modularisierung stellt somit e<strong>in</strong>ige Anforderungen<br />

an die Eigenschaften beziehungsweise an das Format des B<strong>in</strong>ärcodes und der benötigten<br />

Zusatz<strong>in</strong>formationen. Beachtet man allerd<strong>in</strong>gs diese Anforderungen und verwendet geeignete B<strong>in</strong>ärcodedateien,<br />

so ergeben sich e<strong>in</strong>ige Vorteile gegenüber e<strong>in</strong>em Ansatz auf Quellcodedateien:<br />

• Besonders hervorzuheben ist die Tatsache, dass B<strong>in</strong>ärcode weitestgehend sprachunabhängig ist.<br />

So ist es pr<strong>in</strong>zipiell möglich, e<strong>in</strong>e auf B<strong>in</strong>ärcode basierende Technik anzuwenden, unabhängig<br />

davon, aus welcher Programmiersprache der Code erzeugt wurde. Will man den Quellcode<br />

analysieren, muss man für jede Sprache e<strong>in</strong>en eigenen Parser erstellen.<br />

• Im Allgeme<strong>in</strong>en können die benötigten Struktur<strong>in</strong>formationen e<strong>in</strong>facher aus dem B<strong>in</strong>ärcode<br />

gewonnen werden als aus dem Quellcode. Quellcode muss man zunächst parsen, um zu e<strong>in</strong>er<br />

Form zu gelangen, an der man die gewünschten Informationen ablesen kann. Das Analysieren<br />

und Parsen des Quellcodes ist jedoch relativ aufwendig, da e<strong>in</strong> Programmierer viele Freiheiten<br />

bei der Erstellung des Codes hat.<br />

Das Format von B<strong>in</strong>ärdateien bietet h<strong>in</strong>gegen weniger Freiheiten, da B<strong>in</strong>ärdateien üblicherweise<br />

automatisch erzeugt werden und zur masch<strong>in</strong>ellen Weiterverarbeitung gedacht s<strong>in</strong>d. B<strong>in</strong>ärdateien<br />

bieten somit den Vorteil, dass sie schon durch e<strong>in</strong>en Compiler <strong>in</strong> e<strong>in</strong>e Form überführt wurden,<br />

40

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!