Tudd Intuíció, előadás, memória kezelése

virtuális memória

virtuális memória (virtuális memória) - minden folyamat legfontosabb erőforrás áll rendelkezésre a Windows operációs rendszer. Minden adat, amely feldolgozza a munka közvetlenül tárolt azt a virtuális memóriát.

Virtuális memória Bevezetés egyrészt lehetővé teszi a felhasználói programok nem foglalkoznak az összetett kérdéseket az igazi helyét a memóriában tárolt adatok, másrészt lehetővé teszi, hogy az operációs rendszer fut egyszerre több folyamat egyidejű, mert ahelyett, hogy drága szűkös erőforrás - RAM használt olcsó és hatalmas kapacitással külső memóriát.

Megvalósítása a virtuális memória a Windows

Tudd Intuíció, előadás, memória kezelése


Ábra. 11.1. virtuális memória végrehajtása a 32 bites Windows

A virtuális memória blokkokra osztjuk egyenlő méretű - a virtuális oldalt. A Windows oldalak nagy (x86 - 4 MB, 64 - 2 MB) és a kis (4 KB). Fizikai memória (RAM) is oszlik oldalain pontosan akkora, mint a virtuális memóriát. Összesen kis virtuális oldalakat feldolgozni 32 bites rendszerek egyenlő 1.048.576 (4GB / 4K = 1.048.576).

Az eljárást általában magában foglalja a teljes mennyiséget nem virtuális memória, csak egy kis része. Ennek megfelelően, nincs értelme (és gyakran, ha lehetséges), hogy osztja az oldal fizikai memória minden egyes virtuális oldal minden folyamat. RAM helyett (mondjuk „rezidens”) egy korlátozott számú oldalakat, amelyek közvetlenül szükséges folyamat. Ez az alcsoport a virtuális oldalakon folyamat található fizikai memória, az úgynevezett munkakészlet a folyamat (munka set).

Azok virtuális oldalakat, amelyek még nem kívánt folyamat, az operációs rendszer lehet eltávolítani a lemezt. egy külön fájlban. úgynevezett swap fájl (lapozófájl).

Hogyan működik a folyamat, hogy melyik jelenleg megkövetelik az oldalon? Erre a speciális adatszerkezetek - laptáblához (oldal táblázatot).

A felhasználó VAP található futtatható kép egy folyamat, a dinamikus csatolású könyvtárak (DLL. Dynamic-link library), és a folyamat egy csomó szál stack.

Amikor elkezdi a program létrehoz egy eljárást (ld. 6. előadás „folyamatok és szálak”), a memória betöltése kód és az adatok a program (futtatható kép, futtatható kép), valamint a szükséges programot dynamic link könyvtárak (DLL). Alakult halom (heap) - régió, ahol a folyamat lehet kiosztani a dinamikus memória adatstruktúrák (.. Azaz struktúrák, amelyek mérete nem ismert előre, hanem határozzuk program végrehajtása során). Alapértelmezésben kupac mérete 1 MB, de ha az alkalmazás összeállított vagy végrehajtása során a folyamat lehet változtatni. Továbbá minden áramot kap stack (verem) tárolására lokális változók és paraméterek funkciók, mint 1MB alapértelmezett.

Tudd Intuíció, előadás, memória kezelése

A rendszerben a VAP található:

  • kernel-képek (ntoskrnl.exe), irányítási rendszerek, HAL (hal.dll), eszközmeghajtók, amelyek szükségesek a rendszer betöltésekor;
  • oldal táblázata a folyamatot;
  • rendszer cache;
  • lapozhatómemória (lapozható) - a rendszer halom lapozható memória;
  • lapozhatómemória (lapozott) - a rendszer nem lapozható csomó;
  • egyéb elemek (lásd az [5].).

Memóriakiosztási folyamatok

WinAPI VirtualAlloc működnek memóriát használ NtAllocateVirtualMemory fő funkciója (fájl bázis \ NTI \ mm \ allocvm.c, 173 vonal).

2. rugalmasabb elosztását memória halom eljárás létezik, amely kezeli kupac manager (kupac manager). Halom használt WinAPI funkció HeapAlloc. valamint a nyelv a C piaci malloc és üzemeltetője C ++ új. Heap Manager a képességét, hogy memóriát feldolgozni tagoltságát 8 bájt (32 bites rendszerek), és a karbantartási ezeket a kérelmeket ugyanazt kernel funkciója, mint VirtualAlloc.

Információkat tárolni az állam a memóriát, ami a felelősség leíró. A MMVAD VadFlags szerkezet tartalmaz terén zászlókat.

Kapcsolódó cikkek