Смекни!
smekni.com

Виртуальная память в Microsoft Windows (стр. 3 из 4)

Во втором поле показывается тип региона 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 -RW- s—
0010D000 Private 4096 -RW- G-
0010E000 Private 139264 -RW- ---
00130000 Private 1048576 ? -RW-
00130000 Private 36864 -RW- ---
00139000 Reserve 1011712 -RW- ---
00230000 Mapped 65536 2 -RW-
00230000 Mapped 4096 -RW- ——
00231000 Reserve 61440 -RW- ---
00240000 Mapped 90112 1 -R — \Device\HarddiskVoluume1\WTNNT\system32\unicode.nls
00240000 Happed 90112 R
00256000 Free 409GO
00260000 Mapped 208896 1 -R-- \Device\HarddiskVoluume1\WTNNT\system32\locale.nls
00260000 Mapped 208896 -R-- ---
00293000 Free 53248
002А0000 Happed 266240 1 -R — \Device\HarddiskVoluume1\WTNNT\system32\sortkey.nls
002А0000 Mapped 266240 -R-- ---
002Е1000 Free 61440
002F0000 Mapped 16384 1 -R- \Device\HarddiskVoluume1\WTNNT\system32\sorttbls.nls
002F0000 Mapped 16384 -R-- ---
002F4000 Free 49152
00300000 Mapped 819200 4 ER-
00300000 Mapped 16384 ЕR-- —--
00304000 Reserve 770048 ER-- ---
003C0000 Mapped 8192 ER-- ---
ОО3С2000 Reserve 24576 ER-- ---
ОО3С8000 Free 229376
00400000 Image 106496 5 ERWC С:\CD\x86\Debug\14_VMMap.exe
00400000 Image 4096 -R-- ---
00401000 Image 81920 ЕR-- —--
00415000 Image 4096 -R-- ---
00416000 Image 8192 -RW- ---
00418000 Image 8192 -R-- ---
0041А000 Free 24576
00420000 Mapped 274432 1 -R-
00420000 Mapped 274432 -R- ---
00463000 Free 53248
00470000 Mapped 3145726 2 ER--
00470000 Mapped 274432 ER-- ---
004B3000 Reserve 2871296 ER-- ---
00770000 Private 4096 1 -RW- ---
00770000 Privale 4096 -RW- ---
00771000 Free 61440
00780000 Pr ivate 4096 1 -RW- ---
00780000 Private 4096 -RW- ---
00781000 Free 61440
00790000 Private 65536 2 -RW- ---
00790000 Private 20480 -RW- ---
00795000 Reserve 45056 -RW- ---
007А0000 Mapped 8192 1 -R-- --- \Device\HarddiskVolume1\WINNT\system32\ctype.nls
007А0000 Mapped 8192 -R-- ---
007A2000 Free 57344
007В0000 Private 524288 2 -RW- ---
007В0000 Private 4096 -RW- ---
007В1000 Reserve 520192 -RW- ---
00830000 Free 1763311616
699D0000 Image 45056 4 ERWC С:\WINNT\Systern32\PSAPI.dll
699D0000 Image 4096 -R-- ---
69901000 Image 16384 ER- ---
699D5000 Image 16384 -RWC ---
699D9000 Image 8192 -R-- ---
699DB000 Free 238505984
77D50000 Imago 450560 4 ERWC C:\WINNT\system32\RPCRT4.DLL
77D50000 Image 4096 -R-- ---
77D51000 image 421888 ER-- ---
77DB8000 Image 409G -RW- ---
77DB9000 Image 20480 -R-- ---
77DBE000 Free 8192
77DC0000 Image 344064 5 ERWC С:\WINNT\syatem32\ADVAPI32.dll
77DC0000 Image 4096 -R-- ---
77DС1000 Image 307200 ER-- ---
77Е0С000 Image 4096 -RW- ---
77E00000 Image 4096 -RWC ---
77Е0E000 Image 24576 -R-- ---
77Е14000 Free 49152
77E20000 Image 401408 4 ERWC С:\WINNT\system32\USER32.dll
/7Е20000 Image 4096 -R-- ---
77Е21000 Image 348160 ER-- ---
77Е76000 Image 4096 -RW- ---
77Е77000 Image 45056 -R-- ---
77Е82000 Free 57344
77Е90000 Image 720896 5 ERWC С \WINNT\system32\KERNEL32.dll
77Е90000 Image 4096 -R-- ---
77Е91000 Image 368640 ER-- ---
77ЕЕВ000 Image 8192 -RW- ---
77EED000 Image 4096 -RWC ---
77ЕЕЕ000 Image 335872 -R-- ---
77F40000 Image 241664 4 ERWC С \WINNT\system32\GDI32.DLL
77F40000 Image 4096 -R-- ---
77F41000 Image 221184 ER-- ---
77F77000 Image 4096 -RW- ---
77F78000 Image 12288 -R-- ---
77F7B000 Free 20480
77F80000 Image 483328 5 ERWC С \WINT\System32\ntdll.dll
77F80000 Image 409b -R-- ---
77F81000 Image 299008 ER-- ---
77FCA000 Image 8192 RW- ---
77FCC000 Image 4096 -RWC ---
77FCD000 Image 167936 -R-- ---
77FF6000 Free 40960
78000000 Image 290816 6 ERWC С \WINNT\system32\MSVCRT.dll
78000000 Image 4096 -R-- ---
78001000 Image 208896 ER-- ---
78031000 Image 32768 -R-- ---
7803С000 Image 12288 -RW- ---
7803F000 Image 16384 -RWC ---
78043000 Image 16384 -R-- ---
78047000 Free 124424192
7F6F0000 Mapped 1048576 2 ER-- ---
7F6F0000 Mapped 28672 ER-- ---
7F6F7000 Reserve 1019904 ER-- ---
7F7F0000 Free 8126464
7FFB0000 Mapped 147456 1 -R-- ---
7FFB0000 Mapped 147456 -R-- ---
7FFD4000 Free 40960
7FFDE000 Private 4096 1 ERW ---
7FFDE000 Private 4096 ERW ---
7FFDF000 Private 4096 1 ERW ---
7FFDF000 Private 4096 ERW ---
7FFF0000 Private 65536 2 -R-- ---
7FFE0000 Private 4096 -R-- ---
7FFE1000 Reserve 61440 -R-- ---

Таблица 13-3. Образец карты адресного пространства процесса (с указанием блоков внутри регионов) в Windows 2000 на 32-разрядном процессоре типа x86