Linker, Loader und ausführbare Formate
Welche Reihenfolge ist die richtige Speicheraufteilung eines üblichen Prozesses unter Linux u. a., von kleinen zu großen Adressen geordnet?
- AText → Daten → BSS → Heap → (frei) → Stack
- BStack → Text → Heap → Daten → BSS
- CHeap → Stack → BSS → Daten → Text
Antwort und Erläuterung anzeigen
Antwort: A. Text → Daten → BSS → Heap → (frei) → Stack
In der typischen Anordnung folgen von der kleinen Adressseite her der Text mit dem Maschinencode, die Daten mit Initialwert und das mit 0 beginnende BSS; darüber wächst der Heap zu größeren Adressen. Der Stack wächst von der großen Adressseite zu kleineren Adressen, und im weiten freien Bereich zwischen beiden liegen Shared Libraries und mmap-Bereiche. Die tatsächlichen Adressen werden aus Sicherheitsgründen durch ASLR bei jeder Ausführung verschoben.