Wat is Relocatie (relocation)?

Verwerking waarbij, nadat de definitieve adressen van code en gegevens vaststaan, voorlopige adressen in instructies en gegevens door de juiste waarden worden vervangen. Wordt door de linker gedaan; bij dynamisch linken wordt een deel tijdens runtime door de dynamische linker gedaan.

Japanse benaming: 再配置

“Relocatie (relocation)” komt voor in 8 oefenvragen uit 1 onderwerpen, bijv. Linker, loader en uitvoerbare formaten.

Vakgebied: Linker, loader en uitvoerbare formaten

Nu oefenen: vragen over Relocatie (relocation)

Welke omschrijving van de relocatie die de linker uitvoert, is juist?

  1. ANadat de definitieve adressen van code en data zijn bepaald, worden de adressen in instructies en data herschreven naar de juiste waarden
  2. BTijdens uitvoering wordt het programma naar een andere computer verplaatst en daar voortgezet
  3. CWanneer het geheugen tekortschiet, worden pagina's naar opslag verplaatst
Antwoord en toelichting tonen

Antwoord: A. Nadat de definitieve adressen van code en data zijn bepaald, worden de adressen in instructies en data herschreven naar de juiste waarden

De compiler maakt elk bestand alsof het op adres 0 begint en legt de plaatsen waar adressen van functies in andere bestanden of van eigen variabelen worden gebruikt vast als relocatie-informatie. Nadat de linker alle bestanden achter elkaar heeft gezet en de werkelijke adressen heeft bepaald, berekent hij voor elke vastgelegde plaats het juiste adres (of de afstand vanaf PC) en schrijft dat in de instructie. Bij dynamisch linken wordt een deel van dit soort herschrijving tijdens uitvoering door de dynamische linker gedaan.

“Relocatie (relocation)” in de toelichting

Vragen met “Relocatie (relocation)” (8)

  1. Welke omschrijving van de relocatie die de linker uitvoert, is juist?
  2. Welke uitspraak over het objectbestand (.o) dat de compiler uit één bronbestand voortbrengt, is juist?
  3. Wat is de juiste hoofdtaak van de linker?
  4. Wat is de juiste betekenis van „extern int count;” in C?
  5. Wat is de juiste rol van de dynamische linker (zoals ld.so) die werkt bij het starten van een dynamisch gelinkt programma op Linux?
  6. Bij het disassembleren van een objectbestand bleek het sprongdoel van de instructie die de externe functie printf aanroept een voorlopige waarde zoals 0 te zijn. Wanneer wordt deze waarde juist ingevuld?
  7. Wat is het juiste verschil tussen „sectie” en „segment” in een ELF-bestand?
  8. Welke combinatie van uitvoerbare bestandsformaten die op de belangrijkste OS'en worden gebruikt, is juist?

Verwante termen

Linker Dynamisch linken Dynamische linker Objectbestand ELF Symbooltabel Symboolresolutie Numerieke apertuur (NA) PLT (procedure linkage table) GOT (global offset table)

Naar de woordenlijst