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.2 Modularisierung<br />

öffentlichen Symbole der Sektionen und enthält die undef<strong>in</strong>ierten Symbole, welche als Verweise auf<br />

andere Objektdateien dienen. E<strong>in</strong> konkretes Beispiel des Inhalts war bereits <strong>in</strong> Abbildung 4.3 zu sehen.<br />

Abbildung 4.4: Schematischer Aufbau e<strong>in</strong>er ELF-Objektdatei<br />

Die Informationen <strong>in</strong> e<strong>in</strong>er ELF-Datei s<strong>in</strong>d <strong>in</strong> e<strong>in</strong>zelnen Sektionen gespeichert. Die Sektionen s<strong>in</strong>d <strong>in</strong> e<strong>in</strong>er Tabelle, der<br />

sogenannten Sektionstabelle (section header table), beschrieben. Die Position und Länge dieser Tabelle ist wiederum<br />

im Dateikopf h<strong>in</strong>terlegt.<br />

Es gibt verschiedene Arten von Sektionen. E<strong>in</strong>ige Sektionen enthalten direkt b<strong>in</strong>äre Daten, andere Sektionen enthalten<br />

beschreibende Informationen wie beispielsweise Relokations- oder Symboltabellen. Die Sektionstabelle beschreibt jede<br />

Sektion mit e<strong>in</strong>em Typ und enthält weitere Informationen über die Zusammengehörigkeit. Für e<strong>in</strong>e Relokationstabelle ist<br />

hier beispielsweise vermerkt, auf welche Sektion mit b<strong>in</strong>ären Daten sie wirkt und auf welche Symboltabelle sie sich<br />

bezieht.<br />

Generelles Vorgehen<br />

Aus diesen Informationen soll nun, als erster Ansatz, e<strong>in</strong> Modul pro Sektion erzeugt werden. Der Inhalt<br />

e<strong>in</strong>es Moduls s<strong>in</strong>d die B<strong>in</strong>ärdaten der entsprechenden Sektion. Die Schnittstelle des Moduls ist durch<br />

die Symbol<strong>in</strong>formationen markiert. Jedes Symbol, das <strong>in</strong> die Sektion zeigt, stellt e<strong>in</strong>en möglichen<br />

E<strong>in</strong>sprungpunkt für e<strong>in</strong>e Funktion oder den Beg<strong>in</strong>n e<strong>in</strong>er Datenstruktur dar. Zur grundlegenden Def<strong>in</strong>ition<br />

der Struktur e<strong>in</strong>es Moduls reichen die identifizierten E<strong>in</strong>sprungpunkte und Datenstrukturen<br />

aus. Dabei wird jedes Symbol verwendet, welches e<strong>in</strong>e e<strong>in</strong>deutige Position <strong>in</strong>nerhalb der Sektion<br />

beschreibt oder öffentlich sichtbar ist. Beschreiben zwei Symbole dieselbe Position und ist e<strong>in</strong>es davon<br />

nur lokal, das heißt nur <strong>in</strong>nerhalb der Übersetzungse<strong>in</strong>heit sichtbar, so wird nur das globale Symbol als<br />

Teil der Schnittstelle verwendet. S<strong>in</strong>d beide Symbole lokal, so enthält e<strong>in</strong>es der Symbole meist mehr<br />

Informationen und beschreibt das Element an der Position genauer. Im Beispiel aus Abbildung 4.3<br />

beschreibt das Symbol .text den Beg<strong>in</strong>n der Sektion. Dieselbe Stelle wird auch von dem Symbol<br />

hello beschrieben. Das Symbol hello ist für unsere Aufgabe wertvoller, da es die Position als<br />

Beg<strong>in</strong>n e<strong>in</strong>er Funktion def<strong>in</strong>iert.<br />

Die Relokationstabelle zu der Sektion wird verwendet, um die Abhängigkeiten des Moduls zu<br />

extrahieren. Jede Relokation, deren Ziel außerhalb der Sektion liegt oder deren Ziel unbekannt ist,<br />

stellt e<strong>in</strong>e Abhängigkeit zu e<strong>in</strong>em anderen Modul dar. Zeigt e<strong>in</strong>e Relokation auf e<strong>in</strong> lokales Symbol,<br />

welches durch den vorherigen Schritt nicht zur Schnittstelle gehört, so wird die Abhängigkeit auf das<br />

Symbol angepasst, das dieselbe Position beschreibt, aber Teil der Schnittstelle ist.<br />

Abbildung 4.5 stellt das Ergebnis für das e<strong>in</strong>fache Beispiel aus Abbildung 4.3 dar. Aus jeder der<br />

beiden Sektionen wurde hier e<strong>in</strong> Modul erstellt.<br />

Mithilfe des beschriebenen Vorgehens können Module <strong>in</strong> der Granularität von Sektionen erstellt<br />

werden. Das Ziel ist jedoch, jede Funktion und Datenstruktur als Modul darzustellen. Möchte man<br />

dazu e<strong>in</strong>e fe<strong>in</strong>ere Granularität erreichen, stehen pr<strong>in</strong>zipiell zwei Möglichkeiten im Raum:<br />

1. Man extrahiert die Elemente <strong>in</strong> e<strong>in</strong>er Sektion und erstellt somit mehrere Module pro Sektion.<br />

2. Man sorgt dafür, dass der Compiler kle<strong>in</strong>ere Sektionen anlegt.<br />

49

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!