Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ОС рулез.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
630.27 Кб
Скачать

Выделение физической памяти под программный код.

Физическая память выделяется в страничном файле. При запуске приложения ОС открывает его исполняемый файл и определяет объем кода и данных приложения. ОС резервирует регион адресного пространства и помечает, что физическая память, связанная с этим регионом – это сам исполнительный (ехе) файл. ОС не выделяет пространство из страничного файла, а использует истинное содержимое исполнительного (ехе) файла, как зарезервированный регион адресного пространства. Программный файл, размещённый на жестком диске и используемый как физическая память для того или иного региона адресного пространства, называется файлом, проецируемым в память. 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(...).

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

//////////////////////////////////////////////////

Программный код или данные

//////////////////////////////////////////////

Защиты типа PAGE_WRITECOPY и PAGE_EXECUTECOPY предназначены для экономного расходования оперативной памяти и места в страничном файле. В Win32 поддерживается механизм, позволяющий двум или более процессам получать одновременный доступ к единому блоку данных. Например:

1-я копия Физическая память 2-я копия

Чтобы предотвратить одновременную запись в общий блок данных разными процессами ОС присваивает этому блоку данных атрибут защиты копирования при записи. Когда поток в одном процессе пытается записать что-нибудь в общий блок данных, то он

1) выделяет из страничного файла страницу физической памяти

2) отыскивает свободную страницу в памяти

3) копирует страницу с данными, которые поток пытается записать в общий блок на свободную страницу памяти, полученную на этапе 2

4) сопоставляет адрес этой страницы виртуальной памяти с новой страницей в памяти.

После этих действий ОС получает собственную копию этого блока данных и может делать с ней, что хочет. Windows 95 и Windows 98 не поддерживают копирование рпи записи.

Лекция № 5