Блоки внутри регионов
Попробуем увеличить детализацию адресного пространства (по сравнению с тем, что показано в таблице 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
Разумеется, в свободных регионах блоков нет, поскольку им не переданы страни цы физической памяти. Строки с описанием блоков состоят из пяти полей.
В первом поле показывается адрес группы страниц с одинаковыми состоянием и атрибутами защиты. Например, по адресу 0x77E20000 передана единственная страница (4096 байтов) физической памяти с атрибутом защиты, разрешающим только чтение. А по адресу 0x77E21000 присутствует блок размером 85 страниц (348 160 байтов) переданной памяти с атрибутами, разрешающими и чтение, и исполнение. Если бы атрибуты защиты этих блоков совпадали, их можно было бы объединить, и тогда на карте памяти появился бы единый элемент размером в 86 страниц (352 256 байтов).
Во втором поле сообщается тип физической памяти, с которой связан тот или иной блок, расположенный в границах зарезервированного региона. В нем появляется одно из пяти возможных значений: Free (свободный), Private (закрытый), Mapped (проецируемый), Image (образ) или Reserve (резервный). Значения Private, Mapped и Image говорят о том, что блок поддерживается физической памятью соответственно из страничного файла, файла данных, загруженного EXE- или DLL-модуля. Если же в поле указано значение Free или Reserve, блок вообще не связан с физической памятью.
Чаще всего блоки в пределах одного региона связаны с однотипной физической памятью. Однако регион вполне может содержать несколько блоков, связанных с физической памятью разных типов. Например, образ файла, проецируемого в память, может быть связан с EXE- или DLL-файлом. Если Вам понадобится что-то записать на одну из страниц в таком регионе с атрибутом защиты PAGEWRITECOPY или PAGE_EXECUTE_WRITECOPY, система подсунет Вашему процессу закрытую копию, связанную со страничным файлом, а не с образом файла. Эта новая страница получит те же атрибуты, что и исходная, но без защиты по типу «копирование при записи».
В третьем поле проставляется размер блока. Все блоки непрерывны в границах региона, и никаких разрывов между ними быть не может.
В четвертом поле показывается количество блоков внутри зарезервированного региона.
В пятом поле выводятся атрибуты защиты и флаги атрибутов защиты текущего блока. Атрибуты защиты блока замещают атрибуты защиты региона, содержащего данный блок. Их допустимые значения идентичны применяемым для регионов; кроме того, блоку могут быть присвоены флаги PAGE_GUARD, PAGE_WRITECOMBINE и PAGE_NOCACHE, недопустимые для региона.