W prostym systemie mikroprocesorowym, złożonym z procesora, pamięci operacyjnej i urządzeń zewnętrznych, każdy adres efektywny wygenerowany przez procesor podczas wykonania programu jest przesyłany wprost do pamięci. Przestrzeń adresowa procesora, zdefiniowana jako zbiór wszystkich adresów, które może wygenerować procesor, jest identyczna z przestrzenią adresową pamięci operacyjnej, zdefiniowaną jako zbiór adresów wszystkich komórek pamięci.
Rozmiar przestrzeni adresowej jest określony przez liczbę bitów adresu efektywnego i wynosi 2k, gdzie A jest długością słowa adresu efektywnego. W systemach mikroprocesorowych nowej generacji rozmiary przestrzeni adresowej programu sięgają giga- , a nawet terabajtów. Realizacja tak dużej
pamięci operacyjnej jest bardzo trudna i ekonomicznie nieopłacalna ze względu na duży koszt i małe wykorzystanie pamięci. Obserwacje programów wykazały, że przez ponad 90% czasu wykonania przeciętny program odwołuje się do mniej niż 10% swojej objętości. Rozwiązaniem problemu jest realizacja
dwupoziomowej struktury pamięci: całość informacji jest rozmieszczana w dużej pamięci zewnętrznej (dyskowej), procesor natomiast komunikuje się bezpośrednio ze znacznie mniejszą
pamięcią operacyjną, do której są kopiowane aktualnie potrzebne dane. Wielka przestrzeń adresowa programu zostaje odwzorowana na małą przestrzeń adresową fizycznie istniejącej pamięci operacyjnej. W celu zapewnienia dostępu procesora do wszystkich danych, odwzorowanie to musi być dynamicznie zmieniane w powiązaniu z przepisywaniem danych między pamięcią operacyjną a zewnętrzną. Jeżeli przepisywanie informacji i związana z nim modyfikacja odwzorowania zostaną zrealizowane w sposób niedostrzegalny dla wykonywanego programu, to tak zorganizowana struktura pamięci nazywa się pamięcią wirtualną. Centralnym elementem sprzętowym niezbędnym przy realizacji
pamięci wirtualnej jest jednostka zarządzania pamięcią (ang. memory management unit) odwzorowująca generowane podczas wykonania programu adresy wirtualne (ang.
virtual address) na adresy fizyczne (ang.
physical address) przesyłane do pamięci operacyjnej. Przed odwzorowaniem jednostka sprawdza, czy żądana komórka znajduje się
w pamięci operacyjnej. Jeżeli nie, to jest generowany specjalny sygnał powodujący przerwanie wykonania aktualnego cyklu rozkazowego przez procesor i przejście do realizacji programu systemowego, którego zadaniem jest sprowadzenie brakującej komórki do pamięci operacyjnej. Po zakończeniu tej operacji procesor może powrócić do wykonania przerwanej instrukcji i przerwanego programu. Należy podkreślić, że reakcja procesora na sygnał braku żądanej komórki różni się od standardowej reakcji na sygnał przerwania. Przerwania są przyjmowane po zakończeniu bieżącej instrukcji i nie zakłócają jej przebiegu. Sygnał braku żądanej komórki przerywa natomiast wykonanie instrukcji (a nawet wykonanie bieżącego cyklu maszynowego), więc ilość pamiętanych informacji umożliwiających późniejsze wznowienie programu jest znacznie większa. Najbardziej rozpowszechnioną metodą realizacji pamięci wirtualnej jest stronicowanie ze sprowadzaniem stron na żądanie (ang. demand paging). Przestrzeń adresowa procesora (
przestrzeń adresów wirtualnych) jest podzielona na strony (ang. page) o stałej długości. Przestrzeń adresów
pamięci operacyjnej jest podzielona na bloki (ang. pageframe) o tej samej długości. Informacja odpowiadająca zawartości całej przestrzeni adresów wirtualnych jest rozmieszczona w pamięci zewnętrznej. Jedynie niektóre strony (aktualnie potrzebne) są umieszczone w blokach pamięci operacyjnej. Odwzorowanie numerów stron na odpowiadające im numery bloków jest realizowane przy użyciu tablicy odwzorowań stron, pamiętanej częściowo w wewnętrznej pamięci jednostki zarządzania pamięcią, a częściowo w wydzielonym obszarze pamięci operacyjnej. Każdy adres wirtualny dzieli się na numer strony i przesunięcie na stronie. Numer strony jest zamieniany na numer bloku zawierającego daną stronę i po złożeniu z przesunięciem jest wysyłany jako adres fizyczny do bloku pamięci. Brak numeru żądanej strony w tablicy odwzorowań stron powoduje wygenerowanie sygnału"braku strony" (ang.
page fauli), który przerywa wykonanie instrukcji i przekazuje sterowanie do systemu operacyjnego w celu sprowadzenia brakującej strony z pamięci zewnętrznej. Po sprowadzeniu strony zawartość tablicy odwzorowań stron jest aktualizowana i procesor może powrócić do wykonania przerwanego programu. Efektywna realizacja algorytmu wymaga przechowywania tablicy odwzorowań stron w pamięci asocjacyjnej, w której numer strony jest traktowany jako klucz porównywany z zawartością wszystkich komórek tablicy jednocześnie.
W środowisku wieloprogramowym każdy program (proces) może mieć własną tablicę odwzorowań stron. Przestrzeń adresów wirtualnych jest tu związana nie z procesorem jako takim, lecz z wykonywanym programem. Oddzielne tablice odwzorowań stron umożliwiają pełną izolację obszarów adresów wirtualnych różnych programów. Programy współpracujące ze sobą mogą również łatwo dzielić wspólne dane, jeżeli ten sam numer bloku pojawi się w tablicach odwzorowań stron obydwu programów. Możliwe jest zróżnicowanie praw dostępu różnych programów do dzielonych przez te programy danych. W tym celu w tablicy odwzorowań stron oprócz numeru strony i numeru bloku są zapisywane związane z daną stroną bity dostępu (ang.
access right bits), wskazujące prawo dostępu do strony w celu:
- odczytania,
- zapisania,
- wykonania programu.
Zmiany zawartości tablic odwzorowań stron są wykonywane wyłącznie przez
system operacyjny. Wszystkie instrukcje odnoszące się do tych tablic są instrukcjami uprzywilejowanymi.