Когда процесс хочет получить доступ к адресу, он использует виртуальный адрес. Этот адрес преобразуется процессором в физический. Способ сделать это с помощью page tables. Каждый процесс имеет связанную таблицу страниц, которая переводит его виртуальные адреса в физические. Поскольку каждый процесс имеет другую таблицу страниц, ОС может обеспечить, чтобы два виртуальных адреса (даже если они были потенциально равны) из разных процессов не отображались на одни и те же физические адреса.
Кроме того, большинство современных процессоров содержат структуру, называемую Translation Lookaside Buffer (TLB). Эта структура является кешем для таблиц страниц, упомянутых ранее. Доступ к таблице страниц является дорогостоящей операцией, и TLB делает эту операцию быстрее.
Существуют и другие возможности для обеспечения разделения между адресными пространствами процессов, например segmentation. Вы можете больше узнать о виртуальной памяти в целом here.