Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по ОС мои.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
2.82 Mб
Скачать

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

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

VirtualAlloc(..., Mem_Commit) - для выделения региона - это ключ. При передаче физ. памяти региону, не обязательно отводить её целому региону. Например, регион 64 Кб можно зарезервировать, а память передать только 2 и 4 странице. Например:

200

250

200×250×128=...

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

Механизм выделения страниц физической памяти.

СФ – страничный файл.

Если данные в страничном файле есть. LIFO.

LRU - менеджер виртуальной памяти отмечает и выгружается та страница, к которой наиболее длительное время не было обращения. В основном используется именно этот алгоритм. Каждый процесс может заблокировать страницу в оперативной памяти. Для блокирования страниц используется функция VirtualLock(...). Причем, для того, чтобы какой-либо процесс не приобрел приоритет количество страниц ограничивается тридцати двумя. Блокировка действует только на время работы данного процесса.

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

Физическая память выделяется в страничном файле. При запуске приложения ОС открывает его исполняемый файл и определяет объем кода и данных приложения. ОС резервирует регион адресного пространства и помечает, что физическая память, связанная с этим регионом – это сам исполнительный (ехе) файл. ОС не выделяет пространство из страничного файла, а использует истинное содержимое исполнительного (ехе) файла, как зарезервированный регион адресного пространства. Программный файл, размещённый на жестком диске и используемый как физическая память для того или иного региона адресного пространства, называется файлом, проецируемым в память. Windows резервирует регион. Файлы Windows готовы к "употреблению", в DOS необходимы заголовки.

  1. Атрибуты защиты страниц памяти в Win32. Изменение атрибутов защиты. Атрибуты защиты страниц.

Отдельные страницы имеют различные атрибуты защиты:

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 не поддерживают копирование рпи записи.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]