en fin detalj om hvordan Dller flyttes som følge av en baseadressekollisjon, og konsekvenser

Raymond

19. januar, 2017

Hvis EN DLL må flyttes på grunn av en base adresse konflikt, da bildet vil bli flyttet, og hele flyttet DLL er nå støttet av sidefilen.

hvis du leser beskrivelsen mer nøye, ser du at det ikke er akkurat hele flyttet DLL som blir støttet av sidefilen. Nærmere bestemt er alle sidene som inneholdt rettinger satt inn i sidefilen. Hvis du er heldig og har en side uten noen rettelser, vil den siden fortsatt bli etterspurt fra bildet fordi kjernen ikke brukte noen rettelser på den, og derfor ikke pådra seg en kopi-på-skriv for den siden, så den fortsetter å bli støttet av filsystembildet.

En av argumentene jeg har sett for forsettlig å forårsake en baseadressekollisjon er slik at den flyttede DLL blir kopiert til sidefilen, noe som er en seier hvis sidefilen er på et raskere medium enn DLL. For eksempel kan sidefilen være PÅ EN SSD eller (gisp) EN RAM-stasjon.

den logikken tar ikke hensyn til tilfelle av sider uten rettelser. Disse sidene vil fortsatt side inn direkte fra den opprinnelige filen, noe som er et problem hvis den opprinnelige filen er på et veldig sakte medium, eller et medium som kan gå tapt, for EKSEMPEL EN CD-ROM-stasjon eller nettverksstasjon.

Heldigvis trenger Du Ikke å spille morsomme spill med baseadressekonflikter for å få hele DLL lastet inn i sidefilen. Bruk i stedet / SWAPRUN linker-flagget som lar deg spesifisere i moduloverskriften at lasteren skal kopiere bildet til byttefilen.

Raymond Chen

Følg

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.