Linker, Loader und ausführbare Formate
Was tut der Loader des Betriebssystems beim Start eines Programms (z. B. unter Linux mit execve)?
- AEr liest Quellcode ein, kompiliert ihn sofort und führt ihn dann aus
- 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
- 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.