|
|
|
|
||
77Е90000 |
Image |
720896 |
5 |
ERWC |
С \WINNT\system32\KERNEL32.dll |
77F40000 |
Image |
241664 |
4 |
ERWC |
С \WINKT\system32\GUI32 DLL |
77F7В000 |
Free |
20480 |
|
|
|
77FB0000 |
image |
483328 |
5 |
ERWC |
С \WINNT\System32\ntdll.dll |
77FF000 |
Free |
40960 |
|
|
|
78000000 |
Image |
290816 |
6 |
bMWC |
С \WINNT\system32\MSVCRI.dll |
78047000 |
Free |
124424192 |
|
|
|
7F6F0000 |
Mapped |
1048576 |
2 |
ER-- |
|
7F7F0000 |
Free |
8126464 |
|
|
|
7FFB0000 |
Mapped |
147456 |
1 |
-R-- |
|
7FFD4000 |
Free |
40960 |
|
|
|
7FFDE000 |
Private |
4096 |
1 |
ERW- |
|
7FFDF000 |
Private |
4096 |
1 |
ERW- |
|
7FFE0000 |
Private |
65536 |
2 |
-R-- |
|
Таблица 13-2. Образец карты адресного пространства процесса в Windows 2000 на 32-разрядном процессоре типа x86
Во втором поле показывается тип региона Free (свободный), Private (закрытый), Image (образ) или Mapped (проецируемый). Эти типы описаны в следующей таблице,
Тип
Описание
Free
Этот диапазон виртуальных адресов не сопоставлен ни с каким типом физической памяти. Его адресное пространство не зарезервировано, приложение может зарезервировать регион по указанному базовому адресу или в любом месте в границах свободного региона
Private
Этот диапазон виртуальных адресов сопоставлен со страничным файлом.
Image
Этот диапазон виртуальных адресов изначально был сопоставлен с образом ЕХЕ- или DLL-файла, проецируемого в память, но теперь, возможно, уже нет. Например, при записи в глобальную переменную из образа модуля механизм поддержки "копирования при записи" выделяет соответствующую страницу памяти из страничного файла, а не исходною образа файла.
Mapped
Этот диапазон виртуальных адресов изначально был сопоставлен с файлом данных, проецируемым в память, но теперь, возможно, уже нет. Например, файл данных мог быть спроецирован с использованием механизма поддержки "копирования при записи". Любые операции записи в этот файл приведут к тому, что соответствующие страницы памяти будут выделены из страничного файла, а не из исходного файла данных.
В третьем поле сообщается размер региона в байтах. Например, система спроецировала образ User32.dll по адресу 0x77E20000. Когда она резервировала адресное пространство для этого образа, ей понадобилось 401 408 байтов. Не забудьте, что в третьем поле всегда содержатся значения, кратные размеру страницы, характерному для данного процессора (4096 байтов для x86).В четвертом поле показано количество блоков в зарезервированном регионе. Блок — это неразрывная группа страниц с одинаковыми атрибутами защиты, связанная с одним и тем же типом физической памяти .Для свободных регионов это значение всегда равно 0, так как им не передается физическая память. (Поэтому в четвертой графе никаких данных для свободных регионов не приводится.) Но для занятых регионов это значение может колебаться в пределах от 1 до максимума (его вычисляют делением размера региона на размер страницы). Скажем, у региона, начинающегося с адреса Ox77E20000, размер — 401 408 байтов. Поскольку процесс выполняется на процессоре x86 (страницы памяти по 4096 байтов), максимальное количество блоков в этом регионе равно 98 (401 408/4096); ну а, судя по карте, в нем содержится 4 блока.
В пятом поле — атрибуты защиты региона. Здесь используются следующие сокращения: E - execute (исполнение), R - read (чтение), W - write (запись), С - copy-onwrite (копирование при записи). Если ни один из атрибутов в этой графе не указан, регион доступен без ограничений. Атрибуты защиты не присваиваются и свободным регионам. Кроме того, здесь Вы никогда не увидите флагов атрибутов защиты PAGE_ GUARD или PAGE_NOCACHE — они имеют смысл только для физической памяти, а не для зарезервированного адресного пространства. Атрибуты защиты присваиваются регионам только эффективности ради и всегда замещаются атрибутами защиты, присвоенными физической памяти.
В шестом (и последнем) поле кратко описывается содержимое текущего региона. Для свободных регионов оно всегда пустое, а для закрытых — обычно пустое
Блоки внутри регионов
Попробуем увеличить детализацию адресного пространства (по сравнению с тем, что показано в таблице 13-2). Например, таблица 13-3 показывает ту же карту адресного пространства, но в другом "масштабе": по ней можно узнать, из каких блоков состоит каждый регион.
Базовый адрес
Тип
Размер
Блоки
Атрибут(ы) защиты
Описание
00000000
Free
65536
00010000
Private
4096
1
-RW-
00010000
Private
4096
-RW-
00011000
Free
61440
00020000
Private
4096
1
-HW-
00020000
Private
4096
-HW- ---
00021000
Free
61440
00030000
Private
1048576
3
-RW-
Стек потока
00030000
Reserve
905216
При использовании материалов активная ссылка на источник обязательна.