Windows для профессионалов


Блоки внутри регионов


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


Содержание раздела