Linker, loader en uitvoerbare formaten

Wat doet de loader van het OS bij het starten van een programma (zoals execve op Linux)?

  1. ADe broncode inlezen, ter plekke compileren en dan uitvoeren
  2. BVolgens de programmaheaders van het uitvoerbare bestand de delen in het geheugen plaatsen, argumenten en dergelijke op de stack klaarzetten en de uitvoering beginnen op het adres van de ingang
  3. CAlle symboolnamen van het uitvoerbare bestand op het scherm tonen en dan uitvoeren
Antwoord en toelichting tonen

Antwoord: B. Volgens de programmaheaders van het uitvoerbare bestand de delen in het geheugen plaatsen, argumenten en dergelijke op de stack klaarzetten en de uitvoering beginnen op het adres van de ingang

De loader leest de header van het uitvoerbare bestand en koppelt de in de programmaheaders beschreven delen (segmenten) met rechten voor lezen, schrijven en uitvoeren aan de virtuele adresruimte. Hij maakt het met 0 gevulde gebied voor BSS en de stack klaar en zet opdrachtregelargumenten en omgevingsvariabelen op de stack. Bij dynamisch linken begint de uitvoering bij de dynamische linker en anders op het adres van de ingang van het uitvoerbare bestand.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Welke uitspraak is juist over het adres waar het OS in een C-programma de uitvoering begint (entry point)?
  2. Wat gebeurt er in het algemeen met de waarde 3 als de C-functie main eindigt met „return 3;”?
  3. Wat gebeurt er als het commando strip op een uitvoerbaar bestand wordt gebruikt?
  4. Hoe worden zwakke symbolen (weak symbols) door de linker behandeld?
  5. Wat is het belangrijkste doel van name mangling in C++, waarbij de compiler symboolnamen maakt door informatie zoals argumenttypen aan de functienaam toe te voegen?

Vergelijkingen bij dit onderwerp