Ezt találtam (korrekt a leírás?)
Virtuális memóriacím
Virtuális memóriáról már mindannyian hallottunk. De mi az a virtuális memóriacím? Nyílván köze van a virtuális memóriához, nem? Nos, igen is, meg nem is. Mindjárt látni fogjuk, hogy miről is van szó.
A Windows XP egy úgynevezett virtuális memóriacím táblán keresztül éri el a memóriát. Közvetlenül soha nem képes - és ez így is van jól - bármiféle címet elérni, mindig virtuális memóriacímeken keresztül olvas és ír.
Ebbe a virtuális táblába beletartozik minden memória, ami a számítógépen található, beleértve a fizikai memóriát, a virtuális memóriát , a videokártya memóriáját, és minden olyan eszköz, periféria memóriáját, melyen található valamennyi fizikai RAM. És itt jön a probléma. Ugyanis - a 32 bites operációs rendszer korlátaiból adódóan - csak egy ilyen virtuális memóriacím tábla létezik, és ebbe bele kell férnie az összes, a számítógépben található és használni kívánt memóriának is.
Tehát van összesen 32 bitnyi memóriacímünk, melynek címei 0x00000000-0xFFFFFFFF-ig terjedhetnek.
De nézzük meg, hogy hogyan is néz ez ki a valóságban.
A képzeletbeli gépünkön 1GB fizikai memória, egy 128MB-s videokártya, és egyéb elhanyagolható méretű memóriát tartalmazó periféria található, melyeket az egyszerűség kedvéért nem részletezek. A virtuális memóriacím tábla így néz ki (angol elnevezéseket használok, mivel csak angol XP-t használok):
Graphics Controller
Memory Range E8000000-EFFFFFFF (ez épp 128MB)
System Board
Memory Range 00000000-3FFFFFFF (ez épp 1GB)
Ezeket az értékeket könnyen leellenőrizhetjük a Hardverkezelőben, ha megnézzük az eszköz Resources fülét. A legtöbbször több részletben van lefoglalva az eszköznek a virtuális memóriacím, tehát valószínűleg több bejegyzést fogunk látni.
Azt hiszem ezzel eddig nincs is probléma, rengeteg szabad virtuális memóriacímünk marad a bővítésre. De mi történik akkor, amikor a számítógépünkben valóban megtalálható 4GB fizikai memória, és mellette még egy 512MB memóriával rendelkező videokártya? Nos, vizsgáljuk meg.
Windowsunk lefoglalja a virtuális táblából az 512MB területet a videokártyának (és persze minden más eszköznek is foglal, amennyiben szükséges), majd megpróbál 4GB-t lefoglalni a fizikai RAM-nak, de hoppá, itt jön a probléma, annyi már nincs. Mit tehet ilyenkor? Lefoglalja az összes maradék helyet, mely - ez esetben - 3,5GB.
Tehát, annak ellenére, hogy gépünk fizikailag 4GB memóriát tartalmaz, csak 3,5GB lesz elérhető a rendszer számára, a maradék elvész. Ez nem ugyanaz, mintha a rendszer lefoglalna egy részt a fizikai memóriából a videokártyának, egyszerűen nem is tud róla, hogy létezik az a maradék memóriarész. Persze ez a mi szempontunkból lényegtelen.
Ez az egész így néz ki:
Graphics Controller
Memory Range D0000000-EFFFFFFF (ez épp 512MB)
System Board
Memory Range 00000000-CFFFFFFF
Memory Range F0000000-FFFFFFFF (a kettő együtt 3,5GB)