Die übliche Technik ist die Verwendung einer Funktion des virtuellen Speichermanagers, der in den meisten modernen CPUs vorhanden ist.
Die Funktionsweise dieser Hardware besteht darin, dass sie eine Liste von Speicherfragmenten in einem Zwischenspeicher (Cache) speichert und eine Liste der Adressen, denen sie entsprechen. Wenn ein Programm versucht, einen Speicher zu lesen, der nicht in diesem Cache vorhanden ist, holt die MMU den Speicher nicht einfach aus dem Hauptspeicher, da die Adressen im Cache nur "logische" Adressen sind. Stattdessen ruft sie ein anderes Programm auf, das die Adresse interpretiert und den Speicher von dort abruft, wo er sein sollte.
Dieses Programm, ein so genannter Pager, wird vom Kernel bereitgestellt, und spezielle Flags in der MMU verhindern, dass dieses Programm überschrieben wird.
Wenn dieses Programm feststellt, dass die Adresse dem Speicher entspricht, den der Prozess nutzen soll, liefert es der MMU die physikalische Adresse im Hauptspeicher, die der logischen Adresse entspricht, die das Benutzerprogramm angefordert hat, die MMU holt sie in ihren Cache und setzt die Ausführung des Benutzerprogramms fort.
Wenn es sich bei dieser Adresse um eine "spezielle" Adresse handelt, z. B. für eine im Speicher abgebildete Datei, dann holt der Kernel den entsprechenden Teil der Datei in den Cache und lässt das Programm damit laufen.
Wenn die Adresse in einem Bereich liegt, der zum Kernel gehört, oder wenn das Programm diese Adresse noch nicht für sich selbst reserviert hat, löst der Pager einen SEGFAULT aus und beendet das Programm.
Da es sich bei den Adressen um logische und nicht um physikalische Adressen handelt, können verschiedene Benutzerprogramme dieselben logischen Adressen für verschiedene physikalische Adressen verwenden. Das Kernel-Pager-Programm und die MMU machen dies alles transparent und automatisch.
Dieser Schutz ist bei älteren CPUs (z. B. 80286-CPUs) und einigen Geräten mit sehr geringem Stromverbrauch (z. B. ARM CortexM3- oder Attiny-CPUs) nicht möglich, da es keine MMU gibt; bei diesen Systemen sind alle Adressen physikalische Adressen mit einer 1:1-Entsprechung zwischen Ram und Adressraum.