Виртуальная память
Иллюзия того, что у каждого процесса вся память в единоличном распоряжении, начиная с нулевого адреса.
Адреса, которыми пользуется программа, выдуманы. При каждом обращении MMU переводит их в физические, используя для каждого процесса отдельную таблицу трансляции. Две программы могут пользоваться одним и тем же адресом и всё равно не увидят данных друг друга.
Из этой конструкции следуют три вещи. Изоляция: программа не может добраться до чужой памяти, потому что туда не ведёт ни одна трансляция. Простота: компилятору не нужно знать, где в физической памяти окажется программа, и он может каждый раз размещать код по одному и тому же адресу. И overcommit: адресное пространство может быть намного больше объёма ОЗУ — остальное лежит на диске или вовсе не выделено, пока к нему не обратятся. На этом же строится ASLR — раскладка случайно меняется при каждом запуске, чтобы усложнить атаки.