finom részlet arról, hogy a DLL-ek hogyan kerülnek áthelyezésre egy alapcím-ütközés eredményeként, és következményei

Raymond

január 19, 2017

ha egy DLL-t alapcímütközés miatt kell áthelyezni, akkor a kép áthelyezésre kerül, és a teljes áthelyezett DLL-t az oldalfájl támogatja.

ha alaposabban elolvassa a leírást, látni fogja, hogy nem pontosan a teljes áthelyezett DLL-t támogatja az oldalfájl. Pontosabban, az összes olyan oldal, amely javításokat tartalmazott, az oldalfájlba kerül. Ha szerencsénk van, és van egy oldalunk javítás nélkül, akkor az oldal továbbra is igény szerint lapozható lesz a képről, mert a kernel nem alkalmazott rá javításokat, ezért nem került rá másolás az írásra, így továbbra is a fájlrendszer képe támogatja.

az egyik érv, amelyet az alapcím-ütközés szándékos okozására láttam, az, hogy az áthelyezett DLL átmásolódik az oldalfájlba, ami akkor nyer, ha az oldalfájl gyorsabb adathordozón van, mint a DLL. Például az oldalfájl SSD-n vagy (zihál) RAM-meghajtón lehet.

ez a logika nem veszi figyelembe a javítások nélküli oldalak esetét. Ezek az oldalak továbbra is közvetlenül az eredeti fájlból kerülnek be, ami problémát jelent, ha az eredeti fájl nagyon lassú adathordozón van, vagy olyan adathordozón, amely elveszhet, például CD-ROM meghajtón vagy hálózati meghajtón.

szerencsére nem kell vicces játékokat játszania alapcímkonfliktusokkal, hogy a teljes DLL betöltődjön az oldalfájlba. Ehelyett használja a / SWAPRUN linker jelzőt, amely lehetővé teszi a modul fejlécében, hogy a betöltőnek át kell másolnia a képet a swap fájlba.

Raymond Chen

Követ

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.