Лекция №
Аппаратно-независимый уровень управления виртуальной памятью
План
1) Введение в аппаратно-независимый уровень управления виртуальной памятью
2) Исключительные ситуации при работе с памятью.
3) Стратегии управления страничной памятью
4) Алгоритмы замещения страниц (алгоритмы FIFO, оптимальный, LRU, NFU)
Введение в аппаратно-независимый уровень управления виртуальной памятью
Обычно ОС опирается на некоторое собственное представление организации виртуальной памяти, которое используется в аппаратно-независимой части подсистемы управления виртуальной памятью и связывается с конкретной аппаратной реализацией с помощью аппаратно-зависимой части.
Как же достигается возможность наличия виртуальной памяти с размером, существенно превышающим размер оперативной памяти? В элементе таблицы страниц может быть установлен специальный флаг (означающий отсутствие страницы), наличие которого заставляет аппаратуру вместо нормального отображения виртуального адреса в физический прервать выполнение команды и передать управление соответствующему компоненту операционной системы. Когда программа обращается к виртуальной странице, отсутствующей в основной памяти, т.е. "требует" доступа к данным или программному коду, операционная система удовлетворяет это требование путем выделения страницы основной памяти, перемещения в нее копии страницы, находящейся во внешней памяти, и соответствующей модификации элемента таблицы страниц. Здесь имеем дело с частным случаем исключительной ситуации (exception) при работе с памятью, так называемым страничным нарушением (page fault).
Система управления памятью является совокупностью программно-технических средств, обеспечивающих производительное функционирование современных компьютеров. Успех реализации той части ОС, которая относится к управлению виртуальной памятью, определяется близостью архитектуры аппаратуры, поддерживающей виртуальную память, к абстрактной модели виртуальной памяти ОС. В подавляющем большинстве современных компьютеров аппаратура выполняет функции, существенно превышающие потребности модели ОС, так что создание аппаратно-зависимой части подсистемы управления виртуальной памятью ОС в большинстве случаев не является чрезмерно сложной задачей.
Исключительные ситуации при работе с памятью
Ключевая информация о характере отображения адреса хранится в таблице страниц. Помимо сведений о присутствии или отсутствии нужной страницы в оперативной памяти, атрибуты страницы могут разрешать или запрещать конкретные операции обращения к памяти. Когда операция запрещена, или нужной страницы в памяти нет, то операционная система оповещается о происшедшем. Обычно для этого используется механизм исключительных ситуаций (exceptions). При попытке выполнить операцию такого рода, возникает исключительная ситуация страничное нарушение (page fault), приводящая к вызову специальной программы - обработчика (handler) этой исключительной ситуации, который уже и решает, что же нужно предпринять, чтобы обработать конкретный вид страничного нарушения. Страничное нарушение обычно происходит в самых разных случаях, например: при попытке записи в страницу с атрибутом "только чтение" или при попытке чтения или записи страницы с атрибутом "только выполнение". В любом из этих случаев вызывается обработчик страничного нарушения, обычно являющийся частью операционной системы, которому обычно передается причина возникновения исключительной ситуации и соответствующий виртуальный адрес.
Будем рассматривать вариант обращения к не присутствующей странице, поскольку его обработка во многом определяет производительность страничной системы. Оптимизация может происходить по пути уменьшения частоты страничных нарушений, а также увеличения скорости их обработки. Время эффективного доступа к неприсутствующей странице складывается из:
1) Времени обслуживания исключительной ситуации (page fault)
2) Времени чтения (подкачки) страницы из вторичной памяти (иногда, при недостатке места в основной памяти, необходимо вытолкнуть одну из страниц из основной памяти во вторичную, то есть осуществить замещение страницы).
3) Времени рестарта процесса, вызвавшего данный page fault
Первое и третье времена могут быть уменьшены за счет тщательного кодирования нескольких сотен инструкций и составлять десятки микросекунд каждое. Время подкачки страницы с диска будет вероятно близким к нескольким десяткам миллисекунд. Оценки показывают, что если удастся снизить вероятность page fault'а до 5*10**-7, то производительность страничной системы будет снижена всего на 10%. Таким образом, снижение частоты page fault'ов является одной из ключевых задач системы управления памятью. Ее решение обычно связано с правильным выбором алгоритма замещения страниц.