Pamięć wirtualna
Złudzenie, że każdy proces ma całą pamięć dla siebie, zaczynającą się od adresu zero.
Adresy, których używa program, są zmyślone. MMU tłumaczy je na adresy fizyczne przy każdym dostępie, korzystając z osobnej tablicy translacji dla każdego procesu. Dwa programy mogą używać dokładnie tego samego adresu i nigdy nie zobaczyć swoich danych.
Z tego projektu wynikają trzy rzeczy. Izolacja: program nie może dosięgnąć cudzej pamięci, bo żadna translacja tam nie prowadzi. Prostota: kompilator nie musi wiedzieć, gdzie w pamięci fizycznej wyląduje program, i może za każdym razem umieścić kod pod tym samym adresem. Oraz overcommit: przestrzeń adresowa może być znacznie większa niż ilość RAM-u, a reszta leży na dysku albo w ogóle nie jest przydzielona, dopóki jej nikt nie dotknie. Na tym opiera się też ASLR — układ pamięci jest losowany przy każdym uruchomieniu, co utrudnia ataki.