Linker, Loader und ausführbare Formate

Was tut der Loader des Betriebssystems beim Start eines Programms (z. B. unter Linux mit execve)?

  1. AEr liest Quellcode ein, kompiliert ihn sofort und führt ihn dann aus
  2. BEr legt die einzelnen Teile gemäß den Program Headern der ausführbaren Datei im Speicher ab, bereitet Argumente usw. auf dem Stack vor und beginnt die Ausführung an der Einsprungadresse
  3. CEr zeigt alle Symbolnamen der ausführbaren Datei auf dem Bildschirm an und führt sie dann aus
Antwort und Erläuterung anzeigen

Antwort: B. Er legt die einzelnen Teile gemäß den Program Headern der ausführbaren Datei im Speicher ab, bereitet Argumente usw. auf dem Stack vor und beginnt die Ausführung an der Einsprungadresse

Der Loader liest den Header der ausführbaren Datei und bildet die in den Program Headern angegebenen Teile (Segmente) mit Lese-, Schreib- und Ausführungsrechten in den virtuellen Adressraum ab. Er stellt den mit 0 gefüllten Bereich für das BSS und den Stack bereit und legt Kommandozeilenargumente und Umgebungsvariablen auf den Stack. Bei dynamischem Linken beginnt die Ausführung im dynamischen Linker, sonst an der Einsprungadresse der ausführbaren Datei.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Welche Aussage zur Adresse, an der das Betriebssystem bei einem C-Programm die Ausführung zuerst beginnt (Entry Point), ist richtig?
  2. Was geschieht im Allgemeinen mit dem Wert 3, wenn die Funktion main in C mit „return 3;“ endet?
  3. Was geschieht, wenn der Befehl strip auf eine ausführbare Datei angewendet wird?
  4. Welche Aussage zur Behandlung schwacher Symbole (Weak Symbols) beim Linker ist richtig?
  5. Was ist der Hauptzweck des „Name Mangling“, bei dem der C++-Compiler Symbolnamen durch Anfügen von Informationen wie Argumenttypen an den Funktionsnamen bildet?

Vergleiche zu diesem Thema