Архитектура памяти в Windows

ЧАСТЬ III УПРАВЛЕНИЕ ПАМЯТЬЮ

ГЛАВА 13Архитектура памяти в Windows

Архитектура памяти, используемая в операционной системе, — ключ к пониманию

того, как система делает то, что она делает. Когда начинаешь работать с новой операционной системой, всегда возникает масса вопросов Как разделить данные между двумя приложениями? Где хранится та или иная информация? Как оптимизировать свою программу? Список вопросов можно продолжить.

Обычно знание того, как система управляет памятью, упрощает и ускоряет поиск ответов па эти вопросы. Поэтому здесь мы рассмотрим архитектуру памяти, применяемую в Microsoft Windows.

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

Поскольку каждому процессу отводится закрытое адресное пространство, то, ког да в процессе выполняется какой-нибудь поток, он получает доступ только… NOTE: В Windows 2000 память, принадлежащая собственно операционной системе,… Итак, как я уже говорил, адресное пространство процесса закрыто. Отсюда вытекает, что процесс А в своем адресном…

Как адресное пространство разбивается на разделы

Как видите, ядра 32- и 64-разрядной Windows 2000 создают разделы, почти одинаковые по назначению, но отличающиеся по размеру и расположению. Однако… Таблица 13-1. Так адресное пространство процесса разбивается на разделы NOTE: Microsoft активно работает над 64-разрядной Windows 2000. На момент напиcания книги эта система все еще…

Регионы в адресном пространстве

Резервируя регион в адресном пространстве, система обеспечивает еще и кратность размера региона размеру страницы. Так называется единица объема… тоже будет работать со страницами размером 8 Кб. Однако в зависимости от… NOTE: Иногда система сама резервирует некоторые регионы адресного пространства в интересах Вашего процесса, например,…

Передача региону физической памяти

Передавая физическую память регионам, нет нужды отводить ее целому региот Можно, скажем, зарезервировать регион размером 64 Кб и нередать физическую… Когда физическая память, переданная зарезервированному региону, больше не…

Физическая память и страничный файл

ющие вплоть до 16 Мб памяти Современные операционные системы умеют имитировать память за счет дискового пространства. При этом на диске создается… Разумеется, операции с виртуальной памятью требуют соответствующей поддержки… С точки зрения прикладной программы, страничный файл просто увеличивает объем памяти, которой она может пользоваться…

Физическая память в страничном файле не хранится

WINDOWS 2000 Windows 2000 может использовать несколько страничных файлов, и, если они…

Атрибуты защиты

На процессорных платформах x86 и Alpha атрибут PAGE_EXECUTE не поддерживается, хотя в операционных системах такая поддержка предусмотрена… WINDOWS 98 В Windows 98 страницам физической памяти можно присвоить только… Защита типа «копирование при записи»

Специальные флаги атрибутов защиты

Флаг PAGE_NOCACHE отключает кэширование переданных страниц. Как правило, использовать этот флаг не рекомендуется; он предусмотрен главным образом… Флаг PAGE_WRITECOMBINE тоже предназначен для разработчиков драйверов… Флаг PAGE_GUARD позволнет приложениям получать уведомление (через механизм исключений) в тот момент, когда на страницу…

Подводя итоги

Карта в таблице 13-2 показывает регионы, расположенные в адресном пространстве процесса. Каждому региону соответствует своя строка в таблице, а… В первом (крайнем слева) поле проставляется базовый адрес региона. Наверное,… ства, который начинается по адресу 0x7FFE0000. Все регионы непрерывны. Почти все базовые адреса занятых регионов…

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

Таблица 13-3. Образец карты адресного пространства процесса (с указанием блоков внутри регионов) в Windows 2000 на 32-разрядном процессоре типа… Разумеется, в свободных регионах блоков нет, поскольку им не переданы страни… В первом поле показывается адрес группы страниц с одинаковыми состоянием и атрибутами защиты. Например, по адресу…

Особенности адресного пространства в Windows 98

Таблица 13-4. Образец карты адресного пространства процесса (с указанием блоков внутри регионов) в Windows 98 Главное отличие двух карт адресного пространства в том, что под управлением… Наверное, Вы заметили, что размер большинства регионов кратен 64 Кб (это значение определяется гранулярностью…

Выравнивание данных

Процессоры работают эффективнее, когда имеютдело с правильно выровненными данными. Например, значение типа WORD всегда должно начинаться с четного… Вот фрагмент кода, обращающийся к невыровненным данным: VOID SomeFunc(PVOID pvDataBuffer) {