2. Vom Programm zum
Prozess
AusfĂŒhrbare BinĂ€rdatei (Binary) enthĂ€lt den
passenden Programmcode fĂŒr das Betriebssystem
und den Prozessor
Das Format beschreibt alle benötigten
Informationen, die das System zum Laden und
Starten des Programmes benötigt
Linux: Executable and Linking Format (ELF)
Windows: Portable Executable (PE)
Alte UNIXe: a.out (Assembler Out)
3.
4.
5.
6.
7. Das Text-Segment
EnthÀlt den eigentlichen Programmcode mit all seinen
Funktionen und Anweisungen
Liegt in Maschinensprache vor
Wird in der Regel in Assembler angezeigt
8. Das Data-Segment
Initialisierter schreibbarer Speicher
Nutzung und GröĂe ist bereits vor der Laufzeit
festgelegt
HĂ€uïŹge Nutzung: Globale VerfĂŒgbarkeit ĂŒber
Funktionsgrenzen und Aufrufe hinaus
Allerdings auch: Feste Inhalte und Startwerte
10. Das Heap-Segment
DATEN X DATEN Y
Die Halde
Dynamischer Speicher: Programm fordert bei Bedarf
âHeapâ beim Betriebssystem an
Zusammensetzung bei GLIBC aus einer âDouble Linked
Listâ, einer doppelt verketteten Liste
11. Das Stack-Segment
Der âStapelâ - Speicher
Funktionsweise nach LIFO
(Last In, First Out)
âPushâ und âPopâ
Speicherort fĂŒr
Umgebungsvariablen,
Parameter und lokale
Funktionsvariablen
29. WeiterfĂŒhrende Ăbungen
Auftrag: Ein Programm in âCâ schreiben, das die
virtuellen Adressen aller Segmente oder Variablen
auf der Konsole ausgibt
Frage: Wie kann man aus einer BinÀrdatei die
Adressen und die GröĂen der statischen
Datenbereiche und des Anweisungsbereiches
vorher herausïŹnden? Tipp: objdump
Frage: Wo liegt der Unterschied bei dynamisch
und bei statisch gelinkten Programmen im Aufbau
des Text - Segments? Tipp: ldd