Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСиС.doc
Скачиваний:
13
Добавлен:
25.08.2019
Размер:
1.59 Mб
Скачать

Глава 10. Аппаратно-независимый уровень управления виртуальной памятью

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

Как же достигается возможность наличия виртуальной памяти с размером, существенно превышающим размер оперативной памяти? В элементе таблицы страниц может быть установлен специальный флаг (означающий отсутствие страницы), наличие которого заставляет аппаратуру вместо нормального отображения виртуального адреса в физический прервать выполнение команды и передать управление соответствующему компоненту операционной системы. Когда программа обращается к виртуальной странице, отсутствующей в основной памяти, т.е. "требует" доступа к данным или программному коду, операционная система удовлетворяет это требование путем выделения страницы основной памяти, перемещения в нее копии страницы, находящейся во внешней памяти, и соответствующей модификации элемента таблицы страниц. Здесь мы имеем дело с частным случаем  исключительной ситуации (exception) при работе с памятью, так называемым страничным  нарушением (page fault). 

10.1 Исключительные ситуации при работе с памятью.

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

Естественно, что операционная система должна быть как-то оповещена о происшедшем. Обычно для этого используется механизм исключительных ситуаций  (exceptions). При  попытке выполнить операцию такого рода, возникает исключительная ситуация страничное нарушение (page fault), приводящая к вызову специальной программы - обработчика (handler) этой исключительной ситуации, который уже и решает, что же нужно предпринять, чтобы  обработать конкретный вид страничного нарушения. Страничное нарушение обычно происходит в самых разных случаях, например: при попытке записи в страницу с атрибутом "только чтение" или при попытке чтения или записи страницы с атрибутом "только выполнение". В любом из этих случаев вызывается обработчик страничного нарушения, обычно являющийся частью операционной системы, которому обычно передается причина возникновения исключительной ситуации и соответствующий виртуальный адрес.

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

  • времени обслуживания исключительной ситуации (page fault)

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

  • времени рестарта процесса, вызвавшего данный page fault

Первое и третье времена могут быть уменьшены за счет тщательного кодирования нескольких сотен инструкций и составлять десятки микросекунд каждое.  Время подкачки страницы с диска будет вероятно близким к нескольким десяткам миллисекунд.  Оценки (Silberschatz) показывают,  что если удастся снизить вероятность page fault'а до 5*10**-7, то производительность страничной системы будет снижена всего на 10%. Таким образом, снижение частоты page fault'ов является одной из ключевых задач системы управления памятью. Ее решение обычно связано с правильным выбором алгоритма замещения страниц.