Linker, loader en uitvoerbare formaten

Wat is het juiste verschil tussen „sectie” en „segment” in een ELF-bestand?

  1. ASectie is de term voor Windows en segment die voor Linux, met dezelfde inhoud
  2. BEen sectie is de fijne eenheid die de linker behandelt, en een segment is de eenheid die de loader in het geheugen laadt en waarin secties met dezelfde rechten zijn samengevoegd
  3. CEen segment bestaat alleen op schijf en wordt niet in het geheugen geladen
Antwoord en toelichting tonen

Antwoord: B. Een sectie is de fijne eenheid die de linker behandelt, en een segment is de eenheid die de loader in het geheugen laadt en waarin secties met dezelfde rechten zijn samengevoegd

ELF kent twee gezichtspunten. De linker voert samenvoegen en relocatie uit in eenheden van fijne secties zoals .text, .rodata, .data en .bss. De loader koppelt aan het geheugen in eenheden van de segmenten uit de programmaheaders, bijvoorbeeld .text en .rodata in een segment voor lezen en uitvoeren, en .data en .bss in een segment voor lezen en schrijven. Door per recht samen te voegen, is bescherming per pagina gemakkelijk in te stellen.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Welke aanval is gemakkelijker te voorkomen door te verbieden dat een geheugenpagina tegelijk „beschrijfbaar” en „uitvoerbaar” is (W^X, scheiding van schrijven en uitvoeren)?
  2. Wanneer wordt bij gedeelde bibliotheken op Linux het versienummer van de soname, zoals de „.1” in libfoo.so.1, in het algemeen verhoogd?
  3. Wat is er te weten te komen als op Linux het commando ldd op een uitvoerbaar bestand wordt gebruikt?
  4. Welke combinatie van uitvoerbare bestandsformaten die op de belangrijkste OS'en worden gebruikt, is juist?
  5. Wat gebeurt er in het algemeen op Linux en dergelijke als recursie te diep wordt en de bovengrens van de stack wordt overschreden?

Vergelijkingen bij dit onderwerp