Pont ez a lényeg, a pointer. Egyben láthatod ugyanabból a processzból is a > 4 GB RAM-ot. Bár kevés processz igényel egyben ennyit.
Ellenben ha a processzek darabjainak elég 2 GB alatti RAM, akkor a kernel a memória belapozgatással megoldja a dolgot 32 bit + PAE segítségével.
Régebben pályán levők emlékeztek még a DOS 16 bites szegmentált címzésére? Ott is belapozgatta a 64 kB-os szegmenseket. Ráadásul 16 byte-os lépésekben tudtad kijelölni.
Továbbá EMM386 is egy trükk volt: a szegmentált címzés által kicímezhető 1 MB-os terület egyik részébe belapozta ha jól emlékszem 256 kB-onként az 1 MB feletti memóriaterületet.
Az int méretéről: bár a régi definíció azt írta, hogy az int mérete az architektúra bitszámával egyezik. Érdekes módon a 32 bitet általános esetben nem vitték feljebb GCC esetén.
Ennek több gyakorlati oka van. Egyik legfontosabb oka, hogy a különböző méretű INT-ek esetén félő sok szoftvernél a fájlba írt illetve a TCP/IP-n átadott adatstruktúrák inkompatibilitása. Másrészt lassabb a 64 bites összeadás a 32 bithez képest, vagy sokkal költségesebb a carry gyors felterjesztése miatt az összeadó.