Gå til innhold

Lastes dynamiske biblioteker dobbelt opp i minnet?


Anbefalte innlegg

Jeg sitter og lurer litt på hvordan ting blir lastet i minnet når det kjøres... (i Linux)

 

Hvis jeg kjører et program så lastes vel hele programmet i minnet før det kjøres... og hvis det ikke er plass i minnet får det vel rett og slett ikke lov til å kjøre vil jeg tro... (Jeg har problem med plass på en liten embedded Linux maskin).

 

Hvordan er det med dynamiske biblioteker? de lastes vel også inn i minnet sammen med programmet...

 

Hva om jeg kjører to programmer som er avhengig av samme dynamisk lenkede bibliotek? Lastes det delte biblioteket to ganger inn i minnet slik at det tar like stor plass i minnet som om programmene hadde vært lenket statisk?

Lenke til kommentar
Videoannonse
Annonse

Jeg er ikke helt sikker på hvordan det gjøres i Linux, men etter det jeg har forstått, støtter ikke Linux kernelen dynamisk lasting av biblioteker, men det er lagt inn som et eget program som fungerer som en wrapper (samme med drivere) Hvordan dette teknisk fungerer vet jeg ikke.

Men ihvertfall så er en bieffekt av dette at en kan blande 32-bit og 64-bit biblioteker og drivere som kan sees på som uheldig.

Lenke til kommentar

Shared libraries (som ordet "shared" impliserer) vil kunne bli delt mellom programmer, så de (eller ihvertfall deler av dem) kun tar plass i minnet én gang.

 

@GeirGrusom: Du tenker på "linux loaderen", altså ld-linux.so? Jeg er ikke sikker på hvordan denne fungerer sånn teknisk sett, men den har vel ikke noe å gjøre med drivere. Drivere kan såvidt jeg kan skjønne lastes dynamisk av kernel, og du kan ikke blande 32-bit og 64-bit drivere.

Lenke til kommentar
  • 2 uker senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...