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

47. Объект-секция. Способы защиты памяти. Объект-секция

Объекты-секции, подобно другим объектам, создаются и удаляются дис­петчером объектов. Последний создает и инициализирует заголовок объекта, который используется для управления объектами; диспетчер виртуальной памя­ти определяет тело объекта-секции. Кроме того, диспетчер виртуальной памяти предоставляет сервисы, которые могут вызываться потоками пользовательского

Рис. 6-6. Объект-секция.

режима для считывания и изменения значений атрибутов, хранящихся в теле объекта-секции. Объект—секция показан на рис. 6—6.

В табл. 6-1 перечислены атрибуты, специфичные для объекта-секции.

Таблица 6-1. Атрибуты объекта-секции

Атрибут

Назначение

Максимальный размер

Максимальное число байт, до которого может расти размер секции; в случае проецируемого файла равно размеру файла

Защита страниц

Постраничная защита памяти назначается всем страницам секции при ее создании

Файл подкачки/

проецируемый файл

Указывает, создана ли секция пустой (резервное хранилище — файл подкачки) или загружена из файла (резервное хранилище — проецируемый файл)

Базированная/

не базированная

Указывает, является ли секция базированной (которая долж­на располагаться по одному и тому же виртуальному адресу во всех использующих ее процессах) или не базированной секцией, которая в разных процессах может располагаться по разным виртуальным адресам

Отображение проекции секции делает часть секции видимой в виртуаль­ном адресном пространстве некоторого процесса. Аналогично, удаление проек­ции секции удаляет ее из адресного пространства процесса.

Совместное использование имеет место, когда два процесса отображают в свои адресные пространства фрагменты одной и той же секции. В этом слу­чае процессы должны синхронизировать доступ к секции, чтобы избежать од­новременного изменения данных. Для синхронизации можно использовать события, семафоры или аппаратно-зависимые блокировки. Сами по себе объекты-секции не являются синхронизационными объектами, т. е. поток не может синхронизировать свое выполнение, ожидая у описателя секции. При­ложения Win32 для синхронизации доступа к объекту-проекции файла (их эквиваленту объекта-секции) могут использовать мьютексы, события, семафо­ры или критические секции.

Для того, чтобы отобразить проекцию секции, процесс сначала должен получить ее описатель. У процесса, создавшего секцию, этот описатель уже есть. Другие процессы (с соответствующими правами доступа) могут открыть описа­тели объекта-секции, если у этого объекта есть имя. Кроме того, процесс может получить описатель секции при наследовании, или когда другой процесс дубли­рует свой описатель объекта—секции и передает его процессу-реципиенту. Во всех описанных случаях и имеет место совместное использование памяти. Если совместно используемая секция создана как временный объект, то диспетчер объектов удаляет эту память, когда освобождается последняя ссылка на объект-секцию. Постоянные объекты-секции не удаляются.

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