Virtuális – fizikai címfordítás, PAE

Még egy dolog maradt a virtuális – fizikai memóriacímek fordítása kapcsán: amikor először próbáltam ezt megnézni egy virtuális gépen, sehogy se akart összejönni. A fő gondom az volt, hogy a BaseDir címek (a folyamatok legfelső szintű laptábláinak címei) nagyon nem úgy néztek ki, mint ahogy az a dokumentációkban le van írva:

image

A WinDbg leírás szerint 000-ra kéne mindegyiknek végződnie, de a System-en kívül a többi nem ilyen formájú. Ráadásul túl közel is vannak egymáshoz, az 1024 elemből álló Page Directory egyszerűen nem fér el ott (32 bites virtuális gép volt).

Arra gyanakodtam, hogy a VMware Tools kavar be valamit, de furcsa volt, mert tudtommal Windows XP esetén nem végez memória paravirtualizációt, a vendég gépnek ugyanúgy kéne kezelnie a memóriát, mintha nem lenne virtualizálva. Leszedtem a VMware Toolst, kikapcsoltam minden optimalizációt, de az eredmény ugyanaz volt.

A megoldás végül az volt, hogy nem a virtualizáció miatt van ez, hanem mert a Physical Address Extension (PAE) be van kapcsolva. Ott három szintű a laptábla hierarchia, és a legfölső szintű (Page Directory Pointer, PDP) az 4 elemből áll. Így nincs gond, elférnek egymás mellett a PDP táblák.

Most már csak az volt a kérdés, hogy miért használ PAE-t, amikor csak 512 MB van kiosztva a virtuális gépnek. A választ itt találtam meg (de most látom, hogy a fenti Wikipedia oldalon is ott van). Ha a CPU támogatja a No Execute (NX) bitet (Data Execution Preventionnek hívja a Windows, amikor megjelölök egy lapot, hogy az ott lévő tartalmat nem lehet végrehajtani), akkor a 32 bites Windowsok PAE kernellel bootolnak, mert a sima 32 bites laptábla leírókba már nem férne bele a +1 bit.

Reklámok
Kategória: Opre
Címke:
Közvetlen link a könyvjelzőhöz.

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

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s