Linker, Loader und ausführbare Formate

Wie wird der physische Speicher genutzt, wenn 100 Prozesse dieselbe Shared Library verwenden?

  1. ASeiten mit unveränderlichem Code teilen sich eine Kopie, Seiten mit beschreibbaren Daten hat jeder Prozess für sich
  2. BSowohl Code als auch Daten liegen pro Prozess in 100 Kopien vor
  3. CAlles einschließlich der Datenseiten wird gemeinsam genutzt, sodass die Prozesse gegenseitig ihre Werte sehen
Antwort und Erläuterung anzeigen

Antwort: A. Seiten mit unveränderlichem Code teilen sich eine Kopie, Seiten mit beschreibbaren Daten hat jeder Prozess für sich

Das Betriebssystem bildet die Shared Library in den virtuellen Adressraum jedes Prozesses ab, und Seiten mit unveränderlichem Code und Konstanten verweisen auf dieselben physischen Seiten. Seiten mit beschreibbaren Daten wie Variablen werden pro Prozess getrennt gehalten, indem z. B. beim ersten Schreiben eine Kopie angelegt wird (Copy-on-Write). So genügt für den Code der Bibliothek auch bei 100 Prozessen ein einziger Speicherbereich.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Beim Disassemblieren einer Objektdatei hatte das Sprungziel des Befehls, der die externe Funktion printf aufruft, einen vorläufigen Wert wie 0. Wann wird dieser Wert korrekt eingetragen?
  2. Welche Aufgabe hat ein in der Embedded-Entwicklung verwendetes Linker-Skript?
  3. Welche Verarbeitung führt der Startcode bei einem Mikrocontroller ohne Betriebssystem unmittelbar nach dem Einschalten aus, bevor er main aufruft?
  4. Was ist der Unterschied zwischen „Section“ und „Segment“ in ELF-Dateien?
  5. Welcher Angriff lässt sich leichter verhindern, wenn Speicherseiten nicht gleichzeitig „beschreibbar“ und „ausführbar“ sein dürfen (W^X, Trennung von Schreiben und Ausführen)?

Vergleiche zu diesem Thema