Выделение физической памяти под программный код
Физическая память выделяется в страничном файле. При запуске
приложения ОС открывает его исполняемый файл и определяет объем кода и данных приложения.
ОС резервирует регион адресного пространства и помечает, что физическая память, связанная с
этим регионом – это сам исполнительный (ехе) файл. ОС не выделяет пространство из
страничного файла, а использует истинное содержимое исполнительного (ехе) файла, как
зарезервированный регион адресного пространства. Программный файл, размещённый на жестком
диске и используемый как физическая память для того или иного региона адресного
пространства, называется файлом, проецируемым в память. Windows резервирует регион. Файлы
Windows готовы к "употреблению", в DOS необходимы 
![]()
![]()
|
Виртуальное адресное пространство
0004:0000
|
|
Атрибуты защиты страниц.
Отдельные страницы имеют различные атрибуты защиты:
1) PAGE_NOACCESS. Попытка чтения, записи, исполнения в этом регионе памяти вызовет нарушение доступа.
2) PAGE_READONLY. Попытка записи, исполнения в этом регионе памяти вызовет нарушение доступа.
3) PAGE_READWRITE. Попытка исполнения в этом регионе памяти вызовет нарушение доступа.
4) PAGE_EXECUTE. Попытка чтения, записи в этом регионе памяти вызовет нарушение доступа.
5) PAGE_EXECUTE_READWRITE. Данный регион допускает любые операции.
6) PAGE_EXECUTE_READ. Попытка записи в этом регионе памяти вызовет нарушение доступа.
7) PAGE_WRITECOPY. Попытка исполнения в этом регионе памяти вызовет нарушение доступа. Запись в память этого региона приводит к тому, что процессу предоставляется личная копия данной страницы физической памяти.
8) PAGE_EXECUTE_WRITECOPY. Данный регион допускает любые операции.
В Windows 95 используются 1,2 и 3 атрибуты защиты. Кроме рассмотренных атрибутов защиты существуют два флага: PAGE_NOCACHE – отключает кэширование выделенной страницы. Использовать его не рекомендуется. В основном используется этот флаг разработчиками драйверов; PAGE_GUARD – специальный флаг. Используется при работе стека потока. Windows 95 эти флаги игнорирует. Флаги защиты можно объединять, используя логическую операцию OR. Для изменения атрибутов используется функция VirtualProtect(...).
предыдущаяследующая