Zarządzanie pamięcią to jeden z najważniejszych podsystemów systemu operacyjnego. Dobrze napisane zarządzanie pamięci to podstawa dobrego systemu. Podsystem ten przydziela dostępną pamięć operacyjną uruchomionym aplikacjom, może odpowiadać także za swappowanie, czyli przenoszenie części pamięci operacyjnej na dysk twardy w celu uzyskania obszaru pamięci dla potrzebującej aplikacji. Źle napisany menedżer pamięci może powodować drastyczny spadek wydajności (odwołania do pamięci przez aplikacje są zwykle bardzo częste), jak również marnotrawstwo pamięci, co zmniejszy możliwą ilość uruchomionych aplikacji. Błędny menedżer może także doprowadzić do tak zwanego wycieku pamięci czyli stopniowego zużywania coraz większej ilości pamięci podczas pracy systemu aż do jej wyczerpania, uniemożliwiającego dalszą pracę. W systemie operacyjnym zwykle istnieje więcej niż jeden menedżer pamięci, każdy przydzielający i zwalniający pamięć określonego poziomu, np. pamięć fizyczna i pamięć wirtualna lub pamięć systemu i pamięć aplikacji.
1. Menedżer pamięci fizycznej.
Ta warstwa zajmuje się przydzielaniem zwykle dość dużych bloków pamięci fizycznej menedżerom wyższych poziomów.
2. Menedżer pamięci wirtualnej.
Występuje w systemach używających stronnicowania (znaczna większość systemów). Przydziela adresy wirtualne blokom pamięci przydzielonej przez menedżer pamięci fizycznej i udostępnia je działającym aplikacjom.
3.a. Menedżer pamięci jądra.
Używany wewnątrz jądra systemowego, w celu przydzielenia niezbędnej pamięci. Zwykle menedżer ten umożliwa alokowanie zarówno bardzo małych (1 bajt) jak również duzych bloków pamięci (ponad 1 mb).
3.b. Menedżer pamięci wysokiego poziomu.
Przydziela na żądanie aplikacji pamięć udostępnioną przez menedżer pamięci niższego poziomu. Podobnie jak menedżer pamięci jądra umożliwia alokowanie zarówno bardzo małych (1 bajt) jak również duzych bloków pamięci (ponad 1 mb).
Istnieją różne sposoby przydzielania i zwalniania pamięci operacyjnej aplikacji. Wśród nich możemy wyróżnić takie metody jak bitmapa, stos, buddy-bitmap oraz różne złożone metody takie jak drzewa binarne lub listy zlinkowane. Wybór sposobu zależy od poziomu menedżera pamięci, jak również po prostu od woli autora systemu. Dokładne opisy poszczególnych sposobów znajdą się w dziale Programowanie.