В Win32 API используется плоская 32-разрядная модель памяти. Для адресации используются 32 разрядные указатели. Хотя 32-разрядный указатель может адресовать 4 гигабайта памяти, процесс Windows 95 может только обращаться к 2 гигабайтам, так как верхние 2 Гб зарезервированы для использования операционной системой. Схема разделения памяти вот такая.
0xFFFFFFFF
Регион размером 1 GB. Драйвера и системные DLL
0xC0000000
0xBFFFFFFF
Регион размером 1 GB. DLL и Файлы проецируемые в память
0x80000000
0x7FFFFFFF
Регион размером 2 GB. Память для программ (процессов)
0x00400000
0x003FFFFF
Память приложений MS DOS
0x00000000
Виртуальная память - это память компьютера, которая объединяет оперативную память в виде модулей SIMM, DIMM и память на жестком диске. Это позволяет использовать намного больше памяти чем физически установлено в виде модулей. Процесс переноса оперативной памяти на диск и обратно называется подкачкой. Виртуальные адреса не совпадают с физическими в связи с этим программа имеет собственное адресное пространство, которое VMM преобразуем в физические адреса. Файл подкачки на диске имеет имя Pagefile.sys. Windows предоставляет программе доступ ко всему адресному пространству и вызовы DLL это прямые вызовы, что говорит о том, что можно записать все куда угодно это опасно, но эффективно.
Управляет виртуальной память в WIN32 - VMM(Virtual Memory Manager) - часть операционной системы, занимающаяся управлением виртуальной памятью. Для программиста существует понятие Virtual Memory API - набор функций, позволяющих приложению работать с виртуальным адресным пространством.