Manager de memorie
Un manager de memorie este o parte a unui program de calculator (atât aplicația , cât și sistemul de operare ) care procesează cererile de alocare și eliberare a memoriei RAM sau (pentru unele arhitecturi de computer ) solicitările de includere a unei anumite zone de memorie în spațiul de adrese al procesorului .
Scopul principal al managerului de memorie în primul sens este implementarea memoriei dinamice . De exemplu, în limbajul C , alocarea dinamică a memoriei se face prin malloc.
Ierarhia managerilor de memorie
Managerii de memorie formează adesea o ierarhie: managerii inferiori folosesc un fel de modele de alocare-eliberare a memoriei și reduc astfel sarcina celor mai înalte. De exemplu:
- Sistem . În partea de sus este managerul de memorie încorporat în sistemul de operare. Contribuie cu aceasta sau cutare pagină la spațiul de adresă al procesului - ceea ce înseamnă că funcționează cu o discreție de 4 kiloocteți, ceea ce îl face foarte lent.
- deținut de proces. Managerul de memorie, încorporat în biblioteca standard a limbajului de programare , preia blocurile de memorie „în vrac” din sistemul de operare și le distribuie în funcție de nevoile programatorului. În același timp, el știe că memoria este acordată doar unui singur proces - ceea ce înseamnă că sincronizarea firelor nu este efectuată de mutex -uri , ci de futexe-uri . Iar trecerea la modul kernel are loc în două cazuri: fie atunci când nu există suficientă „rezervă operațională” de memorie și trebuie să accesați sistemul de operare, fie atunci când unul dintre fire „se împiedică” de un futex ocupat.
- Specializată . Unele structuri de date dinamice, cum ar fi std::vector , preiau și memoria din biblioteca standard (de obicei în blocuri de dimensiuni exponențial mai mari). Astfel, elementele sunt adăugate pe rând, dar apelul către managerul din amonte are loc o dată pentru un număr mare de elemente. Pool-ul de obiecte alocă memorie pentru obiecte de un anumit tip și este util dacă acestea sunt alocate/dealocate în cantități mari etc.
O astfel de ierarhie duce la faptul că la fiecare dintre niveluri există memorie liberă „învechită”. Dar acest lucru este justificat: fragmentarea memoriei este redusă și viteza crește.
Vezi și