Cunoștințe, prelegere, gestionarea memoriei

Memoria virtuală

Toate procesele din sistemul de operare Windows sunt furnizate cu cea mai importantă resursă - memorie virtuală. Toate datele cu care procesele funcționează direct sunt stocate în memoria virtuală.







Virtual Memory Introducere, în primul rând, permite programatorilor de aplicații nu se ocupă cu probleme complexe de localizarea reală a datelor în memorie, și în al doilea rând, permite sistemului de operare pentru a rula mai multe procese în același timp, pentru că în loc de resurse limitate scumpe - RAM utilizat ieftin și capacitate mare externă memorie.

Implementarea memoriei virtuale în Windows

Cunoștințe, prelegere, gestionarea memoriei


Fig. 11.1. Implementarea memoriei virtuale în Windows pe 32 de biți

Memoria virtuală este împărțită în blocuri de aceeași dimensiune - pagini virtuale. În Windows, există pagini mari (x86 - 4 MB, x64 - 2 MB) și mici (4 KB). Memoria fizică (RAM) este, de asemenea, împărțită în pagini de aceeași dimensiune ca și memoria virtuală. Numărul total de pagini virtuale mici de procesare pe sistemele pe 32 de biți este 1 048 576 (4 GB / 4 KB = 1 048 576).

De obicei, procesele implică nu întreaga cantitate de memorie virtuală, ci doar o mică parte din ea. În consecință, nu are sens (și, deseori, o oportunitate) să aloce o pagină în memoria fizică pentru fiecare pagină virtuală a tuturor proceselor. În schimb, RAM (spune "rezident") conține un număr limitat de pagini care sunt direct necesare procesului. Un astfel de subset de pagini virtuale de procesare aflate în memoria fizică se numește set de lucru.







Aceste pagini virtuale, care nu sunt încă solicitate de proces, pot fi descărcate pe disc de sistemul de operare. într-un dosar special. numit un fișier de pagină.

Cum știe procesul în cazul în care pagina solicitată este în prezent? Pentru a face acest lucru, se folosesc structuri de date speciale - tabele de pagini.

Există o imagine a procesului executabil, biblioteci conectate dinamic (DLL, bibliotecă dinamică), stack-uri de procese și fluxuri în WAP-ul utilizatorului.

Când se pornește programul, se creează un proces (vezi Lectura 6 "Procese și fire"), în timp ce datele din cod și program (imaginea executabilă, imaginea executabilă) și DLL-ul necesar programului sunt încărcate în memorie. Se formează o grămadă, o zonă în care un proces poate aloca memorie structurilor dinamice de date (adică structuri care nu sunt cunoscute în avans, dar care sunt determinate în timpul execuției programului). În mod implicit, mărimea mormanului este de 1 MB, dar când compilați o aplicație sau în timpul unui proces, aceasta poate fi modificată. În plus, fiecare fir este prevăzut cu un teanc pentru stocarea variabilelor locale și a parametrilor funcției, de asemenea implicit cu o dimensiune de 1 MB.

Cunoștințe, prelegere, gestionarea memoriei

În sistem VAP sunt situate:

  • kernel images (ntoskrnl.exe), sistemul executabil, HAL (hal.dll), driverele de dispozitiv necesare atunci când boot-ul sistemului;
  • procesarea tabelelor de pagini;
  • cache de sistem;
  • pagina piscină - o grămadă de sistem de memorie pompată;
  • un pool de memorie pompată (piscină neprotejată) - o grămadă de sistem de memorie non-pausable;
  • Alte elemente (a se vedea [5]).

Alocarea memoriei proceselor

Funcția WinAPI VirtualAlloc pentru alocarea memoriei utilizează funcția kernel NtAllocateVirtualMemory (baza de fișiere \ ntos \ mm \ allocvm.c, linia 173).

2. Pentru o alocare mai flexibilă a memoriei, există o grămadă de proces care este controlată de managerul de heap. Funcția heapAlloc este folosită de WinAPI. precum și operatorul limbajului C malloc și operatorul nou C ++. Administratorul heap permite procesului să aloce memoria cu o granularitate de 8 octeți (în sisteme pe 32 de biți) și utilizează aceleași funcții de kernel ca și VirtualAlloc pentru a răspunde acestor solicitări.

Pentru stocarea informațiilor despre starea zonei de memorie pentru care răspunde descriptorul. în structura MMVAD conține un câmp de steaguri VadFlags.







Articole similare

Trimiteți-le prietenilor: