Вам лучше почитать книжку "Внутреннее устройство Windows". Я ведь с самого начала сказал, что подробный рассказ займет много времени.
Немножко и упрощенно - цитата из моей старой статьи.
32-разрядное адресное пространство в процессорах 80386 и старше делится на страницы памяти размером 4 Кб каждая. Управление каждой из этих страниц осуществляется независимо от других. Таких адресных пространств может быть много, но реальное (физическое) адресное пространство доступно только ядру системы и драйверам, лишь они могут непосредственно обратиться к физической памяти. Другие компоненты системы и все прикладные программы работают в виртуальных адресных пространствах, с виртуальными адресами.
Понятие «виртуальная память» несколько неоднозначно. Достаточно часто его используют как противопоставление понятию «физическая память», но в общем случае виртуализацию следует понимать как форму абстрагирования от реального устройства. Очевидно, что программа может выполняться только из физической памяти, а не тогда, когда ее код выгружен в файл подкачки. Но сама программа в общем случае не может определить, находятся ли ее куски в физической памяти или выгружены на диск. Она не может определить и то, в каком именно месте реальной физической памяти находятся ее код и данные - операционная система транслирует адреса ОП, к которым программа обращается в своем виртуальном адресном пространстве, в те адреса, которые программа реально занимает в физической памяти. А если участок виртуальной памяти, к которой обратилась программа, выгружен на диск, ОС приостанавливает работу программы и подгружает нужную страницу в физическую память, после чего программа продолжает работу как будто страница всегда была в памяти.
Чтобы обеспечивать такую трансляцию, операционная система ведет специальную таблицу страниц, в которой указывается текущее соответствие виртуальной страницы и участка физической памяти или участка файла подкачки, в котором действительно хранятся данные.
Таких таблиц несколько - для каждой программы ведется отдельная таблица. Разные программы могут использовать одни и те же виртуальные адреса, но для каждой программы будет установлено свое соответствие между виртуальными и реальными страницами, так что реально обращение будет происходить к разным участкам физической памяти.