Správce paměti
Správce paměti je součástí počítačového programu ( aplikace i operačního systému ), který zpracovává požadavky na přidělení a uvolnění paměti RAM nebo (u některých počítačových architektur ) požadavky na zahrnutí dané oblasti paměti do adresového prostoru procesoru .
Hlavním účelem správce paměti v prvním smyslu je implementace dynamické paměti . Například v jazyce C se dynamická alokace paměti provádí pomocí malloc.
Hierarchie správců paměti
Správci paměti často tvoří hierarchii: nižší manažeři používají určitý druh vzorů alokace-uvolňování paměti a snižují tak zatížení těch vyšších. Například:
- Systém . Nahoře je správce paměti zabudovaný v OS. Přispívá tou či onou stránkou do adresního prostoru procesu – což znamená, že pracuje s diskrétností 4 kilobajty, díky čemuž je velmi pomalý.
- ve vlastnictví procesu. Správce paměti, zabudovaný do standardní knihovny programovacího jazyka , odebírá paměťové bloky „hromadně“ z operačního systému a distribuuje je podle potřeb programátora. Zároveň ví, že paměť je dána pouze jednomu procesu – což znamená, že synchronizaci vláken neprovádějí mutexy , ale futexy . K přepnutí do režimu jádra dochází ve dvou případech: buď když není dostatečná „provozní rezerva“ paměti a potřebujete přístup k OS, nebo když jedno z vláken „narazí“ na vytížený futex.
- Specializované . Některé dynamické datové struktury, jako je std::vector , také přebírají paměť ze standardní knihovny (obvykle v blocích exponenciálně větších velikostí). Prvky se tedy přidávají jeden po druhém, ale volání nadřazeného manažera proběhne jednou pro velký počet prvků. Fond objektů alokuje paměť pro objekty určitého typu a je užitečný, pokud jsou alokovány/dealokovány ve velkém množství atd.
Taková hierarchie vede k tomu, že na každé z úrovní je „zastaralá“ volná paměť. Ale to je oprávněné: fragmentace paměti se sníží a rychlost se zvýší.
Viz také