Memoria virtual
La ilusión de que cada proceso tiene toda la memoria para sí, empezando en la dirección cero.
Las direcciones que usa un programa son inventadas. La MMU las traduce a direcciones físicas en cada acceso, usando una tabla de traducción distinta por proceso. Dos programas pueden usar exactamente la misma dirección y aun así no ver nunca los datos del otro.
Tres cosas se desprenden del diseño. Aislamiento: un programa no puede alcanzar la memoria de otro, porque no hay traducción que lleve allí. Sencillez: el compilador no necesita saber en qué punto de la memoria física aterriza el programa, y puede colocar el código siempre en la misma dirección. Y sobreasignación: el espacio de direcciones puede ser mucho mayor que la RAM disponible, con el resto en disco o sin asignar hasta que se toca. ASLR también se apoya en esto: la disposición se aleatoriza en cada arranque para dificultar los ataques.