Linker, loader en uitvoerbare formaten

Hoe wordt het fysieke geheugen gebruikt als 100 processen dezelfde gedeelde bibliotheek gebruiken?

  1. APagina's met niet-herschreven code delen één kopie, en pagina's met te schrijven data heeft elk proces zelf
  2. BZowel code als data hebben per proces 100 kopieën
  3. CAlles, inclusief datapagina's, wordt gedeeld en processen kunnen elkaars waarden zien
Antwoord en toelichting tonen

Antwoord: A. Pagina's met niet-herschreven code delen één kopie, en pagina's met te schrijven data heeft elk proces zelf

Het OS koppelt de gedeelde bibliotheek aan de virtuele adresruimte van elk proces en laat pagina's met niet-herschreven code en constanten naar dezelfde fysieke pagina wijzen. Pagina's met te schrijven data, zoals variabelen, worden per proces apart gehouden, bijvoorbeeld door op het moment van schrijven een kopie te maken (copy-on-write). Zo is ook bij 100 processen geheugen voor de bibliotheekcode maar één keer nodig.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. 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?
  2. Wat is de juiste rol van het linkerscript dat bij embedded ontwikkeling wordt gebruikt?
  3. Wat is de juiste verwerking die de opstartcode direct na het inschakelen uitvoert voordat main wordt aangeroepen op een microcontroller zonder OS?
  4. Wat is het juiste verschil tussen „sectie” en „segment” in een ELF-bestand?
  5. Welke aanval is gemakkelijker te voorkomen door te verbieden dat een geheugenpagina tegelijk „beschrijfbaar” en „uitvoerbaar” is (W^X, scheiding van schrijven en uitvoeren)?

Vergelijkingen bij dit onderwerp