- •36. Подсистема Win32. 32-х разрядный api. Подсистема Win32
- •37. Структура.
- •38. Конструктивные изменения.
- •39. Api: ms-dos и 16-ти разрядной Windows. Виртуальные dos-машины. Api: ms-dos и 16-ти разрядной Windows.
- •Виртуальные dos-машины
- •44. Диспетчер. Виртуальная память. Диспетчер.
- •Виртуальная память
- •45. Средства пользовательского режима: управление памятью, совместное использование. Средства пользовательского режима
- •Управление памятью
- •Совместное использование памяти
- •46. Совместное использование: секции, проекции и проецируемые файлы. Секции, проекции и проецируемые файлы
- •47. Объект-секция. Способы защиты памяти. Объект-секция
- •Защита памяти
- •48. Собственная память процесса. Совместное использование памяти. Собственная память процесса
- •Совместное использование памяти
- •49. Адресное пространство. Подкачка страниц. Адресное пространство
- •Подкачка страниц
- •50. Механизмы подкачки страниц. Механизмы подкачки страниц
- •51. Стратегия подкачки и рабочие наборы. Стратегия подкачки и рабочие наборы
47. Объект-секция. Способы защиты памяти. Объект-секция
Объекты-секции, подобно другим объектам, создаются и удаляются диспетчером объектов. Последний создает и инициализирует заголовок объекта, который используется для управления объектами; диспетчер виртуальной памяти определяет тело объекта-секции. Кроме того, диспетчер виртуальной памяти предоставляет сервисы, которые могут вызываться потоками пользовательского
Рис. 6-6. Объект-секция.
режима для считывания и изменения значений атрибутов, хранящихся в теле объекта-секции. Объект—секция показан на рис. 6—6.
В табл. 6-1 перечислены атрибуты, специфичные для объекта-секции.
Таблица 6-1. Атрибуты объекта-секции
Атрибут |
Назначение |
Максимальный размер |
Максимальное число байт, до которого может расти размер секции; в случае проецируемого файла равно размеру файла |
Защита страниц
|
Постраничная защита памяти назначается всем страницам секции при ее создании
|
Файл подкачки/ проецируемый файл
|
Указывает, создана ли секция пустой (резервное хранилище — файл подкачки) или загружена из файла (резервное хранилище — проецируемый файл)
|
Базированная/ не базированная |
Указывает, является ли секция базированной (которая должна располагаться по одному и тому же виртуальному адресу во всех использующих ее процессах) или не базированной секцией, которая в разных процессах может располагаться по разным виртуальным адресам |
Отображение проекции секции делает часть секции видимой в виртуальном адресном пространстве некоторого процесса. Аналогично, удаление проекции секции удаляет ее из адресного пространства процесса.
Совместное использование имеет место, когда два процесса отображают в свои адресные пространства фрагменты одной и той же секции. В этом случае процессы должны синхронизировать доступ к секции, чтобы избежать одновременного изменения данных. Для синхронизации можно использовать события, семафоры или аппаратно-зависимые блокировки. Сами по себе объекты-секции не являются синхронизационными объектами, т. е. поток не может синхронизировать свое выполнение, ожидая у описателя секции. Приложения Win32 для синхронизации доступа к объекту-проекции файла (их эквиваленту объекта-секции) могут использовать мьютексы, события, семафоры или критические секции.
Для того, чтобы отобразить проекцию секции, процесс сначала должен получить ее описатель. У процесса, создавшего секцию, этот описатель уже есть. Другие процессы (с соответствующими правами доступа) могут открыть описатели объекта-секции, если у этого объекта есть имя. Кроме того, процесс может получить описатель секции при наследовании, или когда другой процесс дублирует свой описатель объекта—секции и передает его процессу-реципиенту. Во всех описанных случаях и имеет место совместное использование памяти. Если совместно используемая секция создана как временный объект, то диспетчер объектов удаляет эту память, когда освобождается последняя ссылка на объект-секцию. Постоянные объекты-секции не удаляются.
