Linker, loader en uitvoerbare formaten
Welke omschrijving is juist van lazy binding met de PLT (procedure linkage table) bij dynamisch linken?
- AHet adres van een functie in een gedeelde bibliotheek wordt opgelost wanneer de functie voor het eerst wordt aangeroepen en vanaf de tweede keer wordt rechtstreeks naar het opgeloste adres gesprongen
- BVóór het starten van het programma worden altijd de adressen van alle functies opgelost
- CBij elke functie-aanroep wordt het bibliotheekbestand opnieuw van schijf gelezen
Antwoord en toelichting tonen
Antwoord: A. Het adres van een functie in een gedeelde bibliotheek wordt opgelost wanneer de functie voor het eerst wordt aangeroepen en vanaf de tweede keer wordt rechtstreeks naar het opgeloste adres gesprongen
Het programma roept externe functies aan via een kleine ingang in de PLT. Bij lazy binding springt de ingang bij de eerste aanroep naar de oplosroutine van de dynamische linker, die het echte adres zoekt en in de GOT schrijft. Vanaf de tweede keer wordt rechtstreeks naar het adres in de GOT gesprongen. Doordat het oplossen van ongebruikte functies kan worden overgeslagen, start het sneller. Voor de veiligheid wordt echter ook veel de instelling gebruikt waarbij alles bij het opstarten wordt opgelost en de GOT alleen-lezen wordt.
Verder: nog 9 vragen over Linker, loader en uitvoerbare formaten