vbstreets konferencia - Téma megtekintése - virtuális memória

Úgy döntöttem, hogy foglalkozzon a témával kapcsolatban számos félreértés és félreértések a témában (beleértve itt a fórumon).

Emiatt véletlen terjedt a mítoszt, hogy a Windows nem tudja hozzárendelni több mint 4 GB memória minden program összesen. Sőt, még jelenléte nélkül PAE csere lehetővé teszi, hogy válassza ki az összes folyamatokat összegének 64 GB Memória: Windows lehetővé teszi, hogy akár 16 Lapozófájlok 4 GB-ig minden. A PAE ezt a korlátot bővült 256TB (16x16TB).


* Ahhoz, hogy egyszerűsítse a virtuális memória lapozás használta: a teljes memória van osztva rendszeres oldalak (Windows - a 4K mindegyikből), és ugyanazokat a paramétereket kell alkalmazni az egész oldalt. Oldal virtuális AP lehet az egyik három állam: ingyenes, fenntartott, elfoglalt. A különbség az ingyenes és fenntartott oldalak csak hogy fenntartott lap nem tért vissza a memória kiosztás feladatokat; Ezért dinamikusan növekvő folytonos szerkezet (például menet stack) annak létrehozását fenntartva teljesen. Ez biztosítja, hogy az üres rész van fenntartva a hangerőt a verem üres lesz az az idő, amikor szükség van rá, hogy a kibővített verem.

Által elfoglalt oldalon lehet egy vagy két típusa van: fájl-támogatott (file kép: a letöltött végrehajtható modul, vagy kifejezetten létrehozza a fájl-mapping) vagy csere hátú; és függetlenül a maga nemében, használt oldalak egyikén lehet a két pozíció: betöltve (amely megfelel az OP oldal) vagy ki. A letöltött fájl-támogatott oldalakat nem tárolja sehol; ha szükséges, újra betöltve ugyanabból a fájlból, ahonnan jött létre. Terheletlen csere hátú tárolt oldalak a lapozófájl (win386.swp Win9x, pagefile.sys a WinNT). Apropó: csere először be könyvtárban a Windows / 386, mivel 386 először támogatott lapozható. Virtuális AP volt lehetséges kezdődő 286, de a Windows már részt csak mivel WinNT 3.1. Kirakása felhasználatlan források a memóriából, és feltölti őket az exe fájlt a lemezen, valamint a szövetség emlékére kódrészlet több példányban ugyanazt a programot óta létezik a Windows 1.0.

Fontos, hogy a swap-fedezetű oldalak adunk a lapozófájlt a meghajtó nincs az időben az ő mentesítés, és abban a pillanatban a teremtés - a kibocsátáskor biztos volt benne, hogy az oldal, ahol a memóriából. Ezért a lapozófájl olyan hatalmas. akkor is, ha az egész rendszert senki landolt csere hátú lapok, mindegyikük számára van fenntartva hely „esetén hirtelen futni 15 példányban Photoshop.”

Változás az oldalon típus csak egy irányba - a fájl-támogatott a swap-hátú (ez úgy történik hívja VirtualProtect). Miután ez a változás az oldalon kezd zajlanak a lapozófájl. Ha az alkalmazás önmódosító a kódot (például, ha van csomagolva UPX vagy hasonló csomagolóanyag), akkor ha Ön írási hozzáférést biztosít a kódszekció fordítja az oldalak swap hátú típus, és ennek eredményeként a kérelem több helyet a lemezen (mivel teljes kitömörített kép kerül tárolásra a lapozófájl). Ha egy ilyen tömörített alkalmazás futtatásához másodszor, és a memóriában, és a swap file jön létre egy másik példányát a kitömörítés kép - mivel anélkül, hogy a csomagoló az új folyamat lenne vetített ugyanazon oldalán AF, amelyben ő volt, mielőtt az első fokon a kód betöltődik. Tehát, csomagolt alkalmazások több helyet, mint a tömörítetlen - és a lemezen, és a memóriában. Nem tudom elképzelni, hogy miért, és kinek az ötlete támadt, hogy vegyenek részt az ilyen ostobaság.

Az utolsó ezen a területen - a „Szerződés” legyen. Ez az oldalak AP folyamatok vannak elfoglalva, és a betöltött pozíció (bármilyen típusú). Ez az összeg jelenik meg a táblázat „Mem Használat” fül „Folyamatok” Task Manager. Ez a szám változhat, ha a folyamat nem csinál semmit: a rendszer maga dönti el, mikor és berakodása memóriájában oldalakon. A menetrend a „Mem Usage” „Teljesítmény” lapján szomszédos tükrözi egy másik összeget - a swap hátú lapok (függetlenül azok pozíció). (A legújabb Windows, ő végül átnevezték „lapozófájl használata”.) Ez a táblázat a kiosztás és megjelenése virtuális memória folyamatok és nem kapcsolódik az AF terhelést. Ez nem meglepő, hogy az összeg az összes számot az egyik fül nem lesz egyenlő a másik: ezek a számok tükrözik nagyon különböző dolog.


* A VP oldalak, kivéve a szövetség egy bizonyos boltban (AF és / vagy fájl), van egy hozzáférési mód. Eltekintve a szokásos jogok (olvasás, írás, végrehajtás) által támogatott több szokatlan zászló - PAGE_GUARD. Az oldal „bányászott” ezzel a zászló: úgy működik, mint egy normál foglalt oldalt, de amikor először megpróbál hozzáférni történik STATUS_GUARD_PAGE_VIOLATION kivétel, és a lobogó eltávolítjuk. Talán a zászlót, és lehet gondolni sok különböző alkalmazások, de én csak tudom, egy dolog - kezelési verem túlcsordulás.

Self-bővülő verem működik általában az alábbiak. kezdetben fenntartva cím alkalmazása mennyiség (alapértelmezett - 1MB), a felső része (a verem tetején) követ, és csak alul zakommichennoy része teremtett „bányászott oldalon.” A kivételkezelőt ezt az oldalt, illetve vállalja, lejjebb a stack, ami egy új zakommichennoy része az új AP. Ha minden a köteles rész zakommichena verem tovább nőnek nem tud: az új AP nem jön létre, és próbálja meg elérni, túl a verem vezet a hagyományos memória védelmi hibát „memória nem lehet" írott”.

tyomitch írta (a): ha fut, hajtogatják, és nem használható több példányban a hírhedt Photoshop, semmi több köze a rendszer nem fog sikerülni.


Megnéztem? A Photoshop saját mechanizmusa a swap, független az ablakok.

Mégis, amennyire én emlékszem, a / 3GB minimum Advanced Server.

Ennor
Photoshop valószínűleg nem a legjobb példa. De ha egy gigabájt RAM-mal fut Quake 4-swap nélkül, a rendszer sírni, hogy nem elég RAM.

Megnéztem? A Photoshop saját mechanizmusa a swap, független az ablakok.

tyomitch írta (a): ha fut, hajtogatják, és nem használható több példányban a hírhedt Photoshop, semmi több köze a rendszer nem fog sikerülni.


Megnéztem? A Photoshop saját mechanizmusa a swap, független az ablakok.

Ennor írta (a): Még, ha jól emlékszem, a / 3GB minimum Advanced Server.


Az MSDN, pontosan a csökkentett nekem linket felsorolja a támogatott rendszerekben. Skopipastit itt kifejezetten lusta emberek, vagy mi? Mindenesetre, WinXP Pro ezen a listán van.

Látom, igen; összekeverjük a szerver platform, sajnálom.

Kis zametochka mintegy EXCEPTION_STACK_OVERFLOW Kris Kaspersky (ha úgy tetszik):

myschh írta (a): Én egy szamár gondolat, hogy kiugrik EXCEPTION_STACK_OVERFLOW
amikor hivatkozva az utolsó előtti oldalon a köteget, majd
A rendszer lehetővé teszi számunkra, hogy egy másik oldalt, hogy így valahogy
folyamatból kiderült kivétel.

de elérésekor külföldön verem generál EXCEPTION_ACCESS_VIOLATION

És én már gyakorló gyógynövény.

Kapcsolódó cikkek