ВУЗ:
Составители:
Использование адресного пространства в Windows 9x
Общая схема использования адресного пространства процесса в Windows 9x показана на рис. 3.
&HFFFFFFFF = 4 294 967 295
E
&HC0000000 = 3 221 225 472
Здесь размещаются драйвера вир-
туальных устройств, диспетчер
памяти, файловая система, испол-
няемые файлы Windows. Доступно
в пользовательском режиме. (1Гб)
&HHFFFFFFF = 3 221 225 471
D
&H80000000 = 2 147 483 646
Предназначено для Windows.
Для отображаемых в память фай-
лов, совместно используемых
Win32.DLL, 16-разрядных прило-
жений Windows, для выделения
памяти.
Доступно в пользовательском ре-
жиме. (1Гб)
&H7FFFFFFF = 2 147 483 647
C
&H00400000 = 4 194 304
Адресное пространство процессов.
Доступно в пользовательском ре-
жиме. (2 Гб-4 Мб)
&H0000FFFF = 4 194 303
B
&H00001000 = 4 096
Используется для DOS и 16-раз-
рядных приложений Windows.
Доступно в пользовательском ре-
жиме. (4 Мб – 4 Кб)
&H0000FFFF = 4 095
A
&H00000000 = 0
Используется для неинициализи-
рованных указателей (null pointer).
Недоступно в пользовательском
режиме. (4 Кб).
Рис. 3. Схема использования адресного пространства процесса
Область А. Как следует из рисунка, Windows 9х резервирует область А, объем которой всего лишь 4 Кб – с целью преду-
преждения о нулевых указателях. Эта область защищена, и попытка обращения к ней из программы пользовательского ре-
жима приводит к ошибке нарушения доступа.
Область В. Данная область памяти используется для поддержания совместимости с приложениями DOS и 16-
разрядными приложениями Windows. Несмотря на потенциальную доступность, она не должна использоваться для про-
граммирования.
Область С. Область С – это адресное пространство, используемое прикладными программами и их DLL. Здесь разме-
щаются также и модули Windows. Например, если приложению требуется управляющий элемент OCX, его модуль будет
находиться в этой области.
Область D. Windows 9х отображает системные DLL Win32 (KERNEL32.DLL, USER32.DLL и т.д.) в это адресное про-
странство. Данные файлы используются совместно, т.е. несколько процессов могут обращаться к единственной копии такого
файла в физической памяти. Область D доступна для программ пользовательского режима (однако размещать их здесь не ре-
комендуется).
Область Е. Данная область также содержит совместно используемые файлы Windows, такие как исполнительная сис-
тема Windows и ядро, драйверы виртуальных устройств, файловая система, программы управления памятью. Она также дос-
тупна для программ пользовательского режима.
Распределение виртуальной памяти
Каждая страница виртуального адресного пространства может находиться в одном из трех состояний:
1) Reserved (зарезервирована) – страница зарезервирована для использования;
2) Committed (передана) – для данной виртуальной страницы выделена физическая память в файле подкачки или в
файле, отображаемом в память;
3) Free (свободна) – данная страница не зарезервирована и не передана, и поэтому в данный момент она недоступна для
процесса.
Виртуальная память может быть зарезервирована или передана с помощью вызова API-функции VirtualAlloc:
Страницы
- « первая
- ‹ предыдущая
- …
- 14
- 15
- 16
- 17
- 18
- …
- следующая ›
- последняя »