Pamięć wirtualna jest techniką programową a także sprzętową gospodarowania pamięcią operacyjną RAM pozwalającą na przydzielanie pamięci dla wielu procesów, zwalnianie jej i powtórne przydzielanie, w ilości większej niż rzeczywista ilość pamięci fizyczne zainstalowanej w komputerze poprzez przeniesienie danych z ostatnio nie używanej pamięci do pamięci masowej (np. twardego dysku), w sytuacji gdy procesor odwołuje się do danych z pamięci przeniesionej na dysk przerzuca się te dane do pamięci w wolne miejsce a gdy brak wolnej pamięci zwalnia się ją przez wyżej opisane przerzucenie jej na dysk.
Istnieje kilka sposobów na przechowywanie danych zrzuconych z pamięci fizycznej na dysk. Jedna z nich, stosowana w systemach rodziny Windows zakłada zapis pamięci w pliku, znajdującym się na dowolnej partycji komputera. Drugi sposób, stosowany w systemach z rodziny UNIX to utworzenie osobnej partycji wymiany (partycji swap). Drugi sposób (głównie ze względu na ominięcie obsługi systemu plików) jest szybszy.
Pamięć wirtualna jest najczęściej zaimplementowana przy użyciu stronicowania. Procesor gospodaruje wówczas pamięcią w blokach będących wielokrotnością strony o jednakowej wielkości (w procesorach Pentium 4 kB lub 4 MB). Procesy (poza procesem zarządzania pamięcią) "widzą" pamięć poprzez adresy logiczne. Gdy proces rezerwuje pamięć proces rządzący pamięcią przydziela blok opisujący parametry tej pamięci w tablicy stron (adres logiczny, wielkość, adres fizyczny, warunki użycia i inne informacje umożliwiające gospodarowaniem pamięcią).
Adresy logiczne są tłumaczone na ich fizyczne odpowiedniki przy pomocy tablicy stron. Ta znajdująca się w RAM struktura zawiera informacje o tym, gdzie w danej chwili znajduje się dana strona. Tablica stron jest najczęściej buforowana poprzez bufor TLB, zawierający kilkadziesiąt (zwykle ok. 32) wpisów, do których w ostatnim czasie nastąpiło odwołanie.
Pamięć wirtualna może także działać w innych trybach - najpopularniejsze z nich to segmentacja i stronicowanie z segmentacją.
Pierwsza implementacja tej techniki (w systemie UNIX) pojawiła się w systemie 3BSD, napisanym w Uniwersytecie Kalifornijskim w Berkeley.