Адресное пространство процесса Win32 в ОС Windows
В версиях Windows, предшествующих Windows 95, все запущенные программы работали в одном адресном пространстве. Это значит, что любая программа могла читать из памяти другой программы. Более того, программа могла модифицировать память другой программы, что вызвало серьезные неприятности при работе ненадежных программ.
В Windows 2000 каждый процесс Win32 работает в своем собственном адресном пространстве.
Несмотря на важность разделения адресного пространства, некоторые области памяти должны совместно использоваться всеми процессами (например, системные библиотеки DLL).
В адресном пространстве 4 Гбайт Windows резервирует снизу 2 Гбайт под память приложения. Адреса свыше 2 Гбайт отведены для ОС.
Нижние 4 Мбайт отводятся под образ MS DOS, загрузка которого является частью загрузочного процесса Windows, и под сегменты 16 - разрядного пространства.
Область от 4 Мбайт до 2 Гбайт отводится под адресное пространство процессов.
Верхняя половина адресного пространства разделена на две области. Область между 2 и 3 Гбайтом предназначена для использования программами операционной системы.
В нижних адресах этой области расположен остаток 16 – разрядной глобальной кучи. Над глобальной кучей находятся отображенные в память файлы.
Верхушка промежутка между вторым и третьим Гбайтом отведена для 32–разрядных системных DLL (KERNEL32.DLL, GDI32.DLL, ADVAPI32.DLL, USER32.DLL).
Последняя область адресного пространства отведена для компонентов ядра Windows 2000 (VхD).