Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700363.doc
Скачиваний:
16
Добавлен:
01.05.2022
Размер:
3.69 Mб
Скачать

Отображение файла на виртуальное адресное пространство

Виртуальная память предоставляет весьма эффективный механизм доступа к данным на дисковом накопителе методом отображения файла на виртуальное адресное пространство. Идея состоит в том, чтобы в таблице отображения вместо области файла подкачки указать область из некоторого другого файла, того, данные которого надо отобразить на виртуальное адресное пространство.

После отображения файла с его данными можно работать так, как будто они находятся в ОЗУ, причем система виртуальной памяти сделает все автоматически.

Отображение файлов на виртуальное адресное пространство широко используется в современных операционных системах для загрузки программ и обмена данными.

Совместное использование данных в оперативной памяти

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

Заметим кроме того, что помимо совместного использования программного кода, на практике довольно часто возникает задача эффективного обмена данными между параллельными программами.

Виртуальная память позволяет довольно просто и эффективно решать такие задачи: требуется только отображать страницы виртуальной памяти различных процессов на одни и те же страничные кадры в памяти компьютера.

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

В современных операционных системах часто используется метод защиты данных, известный как копирование при записи (copy-on-write), рассмотрим его.

Метод копирования при записи применим в том случае, если программы могут читать некоторые общедоступные данные, но не должны изменять их. Типичным примером использования защиты копирование при записи может служить отображение сегмента инициализированных данных из исполняемого файла.

Основная идея метода защиты данных копирование при записи состоит в следующем. Для защищаемых страничных кадров снимается бит разрешения записи в таблице отображения страниц. При попытке записи в такой страничный кадр, аппаратура компьютера автоматически генерирует исключение, которое поступает на обработку операционной системе. Операционная система должна располагать дополнительной информацией об уровне доступа для всех страничных кадров. Обнаружив, что ошибка была вызвана попыткой записи в защищаемую страницу, операционная система выполняет следующие действия:

  • выделяет в файле подкачки место для размещения страницы;

  • выделяет новый страничный кадр в ОЗУ, и ассоциирует его с файлом подкачки;

  • копирует данные из защищаемого страничного кадра в новый;

  • модифицирует таблицу отображения, чтобы виртуальная страница ассоциировалась с новым страничным кадром и разрешает запись в него.

Таким образом, программа, нарушившая защиту при записи, получает собственную копию данных, с которой она и продолжит работать дальше.