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

Zeit von vielen UNIX-Systemen e<strong>in</strong>gesetzt, so zum Beispiel auch von L<strong>in</strong>ux bis zur Kernel Version 1.2.<br />

Inzwischen hat es jedoch kaum noch Bedeutung, da es fast überall durch Nachfolgeformate wie COFF<br />

oder ELF abgelöst wurde.<br />

Im Laufe der Zeit existierten verschiedene Versionen des Formats. Im ursprünglichen Format<br />

(OMAGIC) wurde nicht zwischen <strong>in</strong>itialisierten Daten und Programmcode unterschieden, das wurde<br />

erst <strong>in</strong> neueren Versionen (NMAGIC) e<strong>in</strong>geführt, um Programmcode schreibgeschützt zu laden. In<br />

e<strong>in</strong>er weiteren Version (ZMAGIC) wurden dann Speicherseiten unterstützt, sodass e<strong>in</strong>zelne Seiten erst<br />

bei Bedarf <strong>in</strong> den Prozess e<strong>in</strong>geladen werden konnten.<br />

Das a.out-Objektformat ist, je nach Version, <strong>in</strong> bis zu sieben Abschnitte unterteilt. Darunter bef<strong>in</strong>det<br />

sich neben e<strong>in</strong>em Codeabschnitt (text segment) und e<strong>in</strong>em Datenbereich (data segment) auch Relokations<strong>in</strong>formationen<br />

(getrennt nach text relocations und data relocations) und e<strong>in</strong>e Symboltabelle<br />

(symbol table). Symbolnamen s<strong>in</strong>d im ursprünglichen a.out-Format auf e<strong>in</strong>e Länge von acht Zeichen<br />

beschränkt. Durch die E<strong>in</strong>führung e<strong>in</strong>er Str<strong>in</strong>gtabelle können sie jedoch <strong>in</strong> neueren Versionen auch<br />

länger se<strong>in</strong>.<br />

E<strong>in</strong>e Speicherung von Debug<strong>in</strong>formationen ist im a.out-Objektformat nicht vorgesehen. Es gibt<br />

jedoch die Möglichkeit Debug<strong>in</strong>formationen im stabs-Debugformat (siehe Abschnitt 4.2.6.1) als<br />

Symbole e<strong>in</strong>zufügen.<br />

COFF<br />

Das Common Object File Format (COFF) [Gir88, Del96] ist der Nachfolger des a.out-Formats. Es<br />

wurde mit UNIX System V Release 3 (SVR3) e<strong>in</strong>geführt, um e<strong>in</strong>ige Schwächen von a.out auszubessern.<br />

So ist es <strong>in</strong> COFF möglich, mehrere Sektionen unterschiedlicher Typen zu def<strong>in</strong>ieren. Hierzu wurde im<br />

Dateikopf e<strong>in</strong>e Tabelle der Sektionen e<strong>in</strong>geführt, die zu jeder Sektion auch e<strong>in</strong>en Namen führt. Der<br />

Name e<strong>in</strong>er Sektion ist jedoch auf höchstens acht Zeichen beschränkt. Sektionen kann der Typ Code<br />

(.text), <strong>in</strong>itialisierte Daten (.data) oder nicht <strong>in</strong>itialisierte Daten (.bss) zugeordnet werden.<br />

Außerdem wurde e<strong>in</strong> e<strong>in</strong>faches Format def<strong>in</strong>iert, um grundlegende Debug<strong>in</strong>formationen <strong>in</strong> e<strong>in</strong>er<br />

COFF-Datei speichern zu können (siehe Abschnitt 4.2.6.1). Das Format der Debug<strong>in</strong>formationen ist<br />

jedoch für die Sprache C optimiert und bietet ke<strong>in</strong>e Erweiterungsmöglichkeiten, sodass man damit<br />

schnell an Grenzen stößt.<br />

XCOFF Um diese E<strong>in</strong>schränkungen und die mangelnden Erweiterungsmöglichkeiten zu umgehen,<br />

hat IBM das COFF-Format für ihr UNIX-Derivat AIX erweitert. Es entstand XCOFF (eXtended COFF),<br />

welches später auch <strong>in</strong> e<strong>in</strong>er 64-bit-Version def<strong>in</strong>iert wurde [Ibm04]. In XCOFF wurden zusätzliche<br />

Sektionstypen e<strong>in</strong>geführt, um beispielsweise das dynamische B<strong>in</strong>den zu vere<strong>in</strong>fachen. Außerdem<br />

kann e<strong>in</strong>e Sektion mit Typ<strong>in</strong>formationen angelegt werden, um e<strong>in</strong>e grundlegende Typprüfung beim<br />

B<strong>in</strong>den von mehreren Dateien durchzuführen. Die Behandlung von Ausnahmen (traps, exceptions)<br />

wird durch e<strong>in</strong>e Sektion unterstützt, welche die Quelle und den Grund von potenziell auftretenden<br />

Ausnahmen enthält. Allgeme<strong>in</strong>e Debug<strong>in</strong>formationen werden <strong>in</strong> e<strong>in</strong>er eigenen Sektion im erweiterbaren<br />

stabs-Format abgelegt.<br />

eCOFF Neben XCOFF gibt es noch e<strong>in</strong>e andere Erweiterung namens eCOFF (extended COFF)<br />

[Com99] für Alpha und MIPS-Architekturen. eCOFF bietet vor allem verbesserte Unterstützung für<br />

dynamisches B<strong>in</strong>den. Außerdem können die B<strong>in</strong>ärdaten <strong>in</strong> eCOFF komprimiert abgelegt werden, um<br />

Speicherplatz zu sparen.<br />

46

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!