Блоки внутри регионов
Попробуем увеличить детализацию адресного пространства (по сравнению с тем, что показано в таблице 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, недопустимые для региона.