Linker, Loader und ausführbare Formate

Welche Aussage zum positionsunabhängigen Code (PIC) ist richtig?

  1. AMaschinencode, der auf jeder CPU gleich funktioniert
  2. BMaschinencode, der sich während der Ausführung ständig an einen anderen Ort verschiebt
  3. CMaschinencode, der so gestaltet ist, dass er ohne Änderung des Codes korrekt funktioniert, an welcher Speicheradresse er auch geladen wird
Antwort und Erläuterung anzeigen

Antwort: C. Maschinencode, der so gestaltet ist, dass er ohne Änderung des Codes korrekt funktioniert, an welcher Speicheradresse er auch geladen wird

Shared Libraries können in jedem Prozess an unterschiedlichen Adressen geladen werden. Positionsunabhängiger Code referenziert Funktionen und Daten nicht über feste Adressen, sondern über den Abstand zum PC oder über eine Tabelle von Adressen (GOT). So muss auch bei geänderter Ladeadresse keine Codeseite überschrieben werden, und eine einzige Kopie im physischen Speicher kann von vielen Prozessen gemeinsam genutzt werden.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Welche Aufgabe hat die bei Shared Libraries verwendete GOT (Global Offset Table)?
  2. Welche Aussage trifft beim dynamischen Linken zu, wenn mit der PLT (Procedure Linkage Table) späte Bindung (Lazy Binding) verwendet wird?
  3. Welche Aufgabe hat der dynamische Linker (z. B. ld.so), der beim Start eines dynamisch gelinkten Programms unter Linux tätig wird?
  4. Welche Aussage zum Zweck von ASLR (Address Space Layout Randomization) ist richtig?
  5. Was ist der Hauptgrund dafür, eine ausführbare Datei als PIE (Position Independent Executable) zu erzeugen?

Vergleiche zu diesem Thema