Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прогр_на_ассембл_для_WINLOWS.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
907.78 Кб
Скачать

1.2.5. Виртуальное адресное пространство

До сих пор речь шла о средствах аппаратной поддержки управления памятью, которое осуществляет операционная система, используя эти средства. Каждому 32-разрядному процессу выделяется свое виртуальное адресное пространство размером 4Г байт. Когда выполняется какой-либо поток, он получает доступ только к той памяти, которая принадлежит его процессу. Структура виртуального адресного пространства процесса для разных версий Windows разная. Так, для Windows 2000 существует два варианта. Первый вариант, как и в других версиях системы, предполагает использование монопольного адресного пространства процесса размером до 2Г байт (Рис.1.12). Второй применяется для поддержки серверов баз данных и предусматривает расширение пользовательского пространства до 3Г байт (Рис.1.13).

Структура виртуального адресного пространства Windows 98 существенно отличается от первого и второго варианта Windows 2000 (Рис.1.14)

Виртуальный адрес

Назначение раздела

00000000h

Для выявления нулевых указателей

0FFFFh

010000h

Для кода и данных пользовательского режима

07FFFFFFFh

080000000h

Для кода и данных режима ядра

0FFFFFFFFh

Рис.1.12. Структура виртуального адресного пространства Windows 2000

с разделом 2Г байт для пользовательского процесса.

Виртуальный адрес

Назначение раздела

00000000h

Для выявления нулевых указателей

0FFFFh

010000h

Для кода и данных пользовательского режима

0BFFFFFFFh

0C0000000h

Для кода и данных режима ядра

0FFFFFFFFh

Рис.1.13. Структура виртуального адресного пространства Windows 2000

с разделом 3Г байт для пользовательского процесса.

Виртуальный адрес

Назначение раздела

00000000h

Для выявления нулевых указателей

0FFFh

01000h

Для совместимости с программами DOS и 16-разрядной Windows

03FFFFF h

0400000h

Для кода и данных пользовательского режима

(монопольно используется процессом)

07FFFFFFFh

080000000h

Разделяемое разными процессами адресное пространство (файлы, проецируемые в память, DLL)

0BFFFFFFFh

0C0000000h

Для кода и данных режима ядра

0FFFFFFFFh

Рис.1.14. Структура виртуального адресного пространства Windows 98.

Для работы с отладчиком необходимо знать, с какого виртуального адреса система отображает исполняемый файл.