В 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 - набор функций, позволяющих приложению работать с виртуальным адресным пространством.