Слайд 1Лекция 6:
Аппаратно-независимое управление виртуальной памятью
АНТОНОВ ЕВГЕНИЙ АНДРЕЕВИЧ
ноябрь 2011 г.
Слайд 2ОПЕРАЦИОННЫЕ СИСТЕМЫ
Аппаратно-независимое управление виртуал. памятью
Исключительные ситуации при работе с
памятью
Слайд 3ОПЕРАЦИОННЫЕ СИСТЕМЫ
Проблема при трансляции виртуальных адресов
Отображение виртуального адреса в физический
осуществляется при помощи таблицы страниц.
Для каждой виртуальной страницы запись в
таблице страниц содержит номер соответствующего страничного кадра в оперативной памяти, а также атрибуты страницы для контроля обращений к памяти.
Что же происходит, когда нужной страницы в памяти нет или операция обращения к памяти недопустима?
Слайд 4ОПЕРАЦИОННЫЕ СИСТЕМЫ
Механизм исключительных ситуаций
Естественно, что ОС должна быть как-то оповещена
об отсутствии нужной страницы.
Обычно для этого используется механизм исключительных ситуаций
(exceptions).
При попытке выполнить подобное обращение к виртуальной странице возникает исключительная ситуация «страничное нарушение» (page fault), приводящая к вызову специальной последовательности команд для обработки конкретного вида страничного нарушения.
Слайд 5ОПЕРАЦИОННЫЕ СИСТЕМЫ
Обработка страничного нарушения
Страничное нарушение может происходить:
при отсутствии страницы в
оперативной памяти,
при попытке записи в страницу с атрибутом «только чтение»
или
при попытке чтения или записи страницы с атрибутом «только выполнение».
В любом из этих случаев вызывается обработчик страничного нарушения, являющийся частью ОС. Ему обычно передается причина возникновения исключительной ситуации и виртуальный адрес, обращение к которому вызвало нарушение.
Слайд 6ОПЕРАЦИОННЫЕ СИСТЕМЫ
Время эффективного доступа к отсутствующей странице
Складывается из:
обслуживания исключительной
ситуации (page fault);
чтения (подкачки) страницы из вторичной памяти (иногда, при
недостатке места в основной памяти, необходимо вытолкнуть одну из страниц из основной памяти во вторичную, то есть осуществить замещение страницы);
возобновления выполнения процесса, вызвавшего данный page fault.
Слайд 7ОПЕРАЦИОННЫЕ СИСТЕМЫ
Анализ повышения производительности
Повышение производительности вычислительной системы может быть достигнуто
за счет уменьшения частоты страничных нарушений, а также за счет
увеличения скорости их обработки.
Таким образом, уменьшение частоты page faults является одной из ключевых задач системы управления памятью. Ее решение обычно связано с правильным выбором алгоритма замещения страниц.
Слайд 8ОПЕРАЦИОННЫЕ СИСТЕМЫ
Аппаратно-независимое управление виртуал. памятью
Стратегии управления страничной памятью
Слайд 9ОПЕРАЦИОННЫЕ СИСТЕМЫ
Стратегия выборки (fetch policy)
В какой момент следует переписать страницу
из вторичной памяти в первичную?
Существует два основных варианта выборки —
по запросу и с упреждением.
Алгоритм выборки по запросу вступает в действие в тот момент, когда процесс обращается к отсутствующей странице, содержимое которой находится на диске.
Его реализация заключается в загрузке страницы с диска в свободную физическую страницу и коррекции соответствующей записи таблицы страниц.
Слайд 10ОПЕРАЦИОННЫЕ СИСТЕМЫ
Стратегия выборки (fetch policy)
Алгоритм выборки с упреждением осуществляет опережающее
чтение — кроме страницы, вызвавшей исключительную ситуацию, в память также
загружается несколько страниц, окружающих ее (обычно соседние страницы располагаются во внешней памяти последовательно).
Такой алгоритм уменьшает накладные расходы, связанные с большим количеством исключительных ситуаций, возникающих при работе со значительными объемами данных; кроме того, оптимизируется работа с диском.
Слайд 11ОПЕРАЦИОННЫЕ СИСТЕМЫ
Стратегия размещения (placement policy)
В какой участок первичной памяти поместить
поступающую страницу?
В системах со страничной организацией все просто — в
любой свободный страничный кадр.
В случае систем с сегментной организацией необходима стратегия, аналогичная стратегии с динамическим распределением.
Слайд 12ОПЕРАЦИОННЫЕ СИСТЕМЫ
Стратегия замещения (replacement policy)
Какую страницу нужно вытолкнуть во внешнюю
память, чтобы освободить место в оперативной памяти?
Разумная стратегия замещения, реализованная
в соответствующем алгоритме замещения страниц, позволяет хранить в памяти самую необходимую информацию и тем самым снизить частоту страничных нарушений. Замещение должно происходить с учетом выделенного каждому процессу количества кадров и принадлежности процессу, который инициировал замещение.
Слайд 13ОПЕРАЦИОННЫЕ СИСТЕМЫ
Аппаратно-независимое управление виртуал. памятью
Алгоритмы замещения страниц
Слайд 14ОПЕРАЦИОННЫЕ СИСТЕМЫ
Действия ОС в случае отсутствия свободных страниц
Найти некоторую занятую
страницу основной памяти;
Переместить в случае надобности ее содержимое во внешнюю
память;
Переписать в этот страничный кадр содержимое нужной виртуальной страницы из внешней памяти;
Модифицировать необходимый элемент соответствующей таблицы страниц;
Продолжить выполнение процесса, вызвавшего эту виртуальную страницу.
Слайд 15ОПЕРАЦИОННЫЕ СИСТЕМЫ
Оптимизация процесса замещения
При замещении приходится дважды передавать страницу между
основной и вторичной памятью. Процесс замещения может быть оптимизирован за
счет использования бита модификации. Бит модификации устанавливается, если хотя бы один байт был записан на страницу.
Если бит не установлен, нет необходимости переписывать данную страницу на диск. Метод применяется и к read-only-страницам, они никогда не модифицируются. Эта схема уменьшает время обработки page fault.
Слайд 16ОПЕРАЦИОННЫЕ СИСТЕМЫ
Аппаратная поддержка статистики обращения к памяти
Большинство процессоров имеют простейшие
аппаратные средства, позволяющие собирать статистику обращений к памяти. Эти средства
включают два специальных флага на каждый элемент таблицы страниц. Флаг ссылки (reference бит) автоматически устанавливается, когда происходит любое обращение к этой странице, а флаг изменения (modify бит) устанавливается, если производится запись в эту страницу.
ОС периодически проверяет установку таких флагов, для того чтобы выделить активно используемые страницы, после чего значения этих флагов сбрасываются.
Слайд 17ОПЕРАЦИОННЫЕ СИСТЕМЫ
Эффективность алгоритма
Оценивается на конкретной последовательности ссылок к памяти,
для которой подсчитывается число возникающих page faults.
Эта последовательность называется строкой
обращений (reference string).
Мы можем генерировать строку обращений искусственным образом при помощи датчика случайных чисел или трассируя конкретную систему.
Слайд 18ОПЕРАЦИОННЫЕ СИСТЕМЫ
Аппаратно-независимое управление виртуал. памятью
Выталкивание первой пришедшей страницы. Алгоритм
FIFO.
Слайд 19ОПЕРАЦИОННЫЕ СИСТЕМЫ
Реализация алгоритма
Простейший алгоритм.
Каждой странице присваивается временная метка. Реализуется это
просто созданием очереди страниц, в конец которой страницы попадают, когда
загружаются в физическую память, а из начала берутся, когда требуется освободить память. Для замещения выбирается старейшая страница.
К сожалению, эта стратегия с достаточной вероятностью будет приводить к замещению активно используемых страниц.
Слайд 20ОПЕРАЦИОННЫЕ СИСТЕМЫ
Аномалия Билэди (Belady)
На первый взгляд кажется очевидным, что
чем больше в памяти страничных кадров, тем реже будут иметь
место page faults.
Удивительно, но это не всегда так.
Как установил Билэди с коллегами, определенные последовательности обращений к страницам в действительности приводят к увеличению числа страничных нарушений при увеличении кадров, выделенных процессу.
Это явление носит название «аномалии Билэди» или «аномалии FIFO».
Слайд 21ОПЕРАЦИОННЫЕ СИСТЕМЫ
Пример аномалии Билэди
9 pf
10 pf
Слайд 22ОПЕРАЦИОННЫЕ СИСТЕМЫ
Аппаратно-независимое управление виртуал. памятью
Оптимальный алгоритм. Алгоритм OPT
Слайд 23ОПЕРАЦИОННЫЕ СИСТЕМЫ
Поиск оптимального алгоритма
Одним из последствий открытия аномалии Билэди стал
поиск оптимального алгоритма, который при заданной строке обращений имел бы
минимальную частоту page faults среди всех других алгоритмов.
Такой алгоритм был найден. Он прост: замещай страницу, которая не будет использоваться в течение самого длительного периода времени.
Слайд 24ОПЕРАЦИОННЫЕ СИСТЕМЫ
Реализация алгоритма OPT
Каждая страница должна быть помечена числом инструкций,
которые будут выполнены, прежде чем на эту страницу будет сделана
первая ссылка. Выталкиваться должна страница, для которой это число наибольшее.
Этот алгоритм легко описать, но реализовать невозможно. ОС не знает, к какой странице будет следующее обращение. (Ранее такие проблемы возникали при планировании процессов — алгоритм SJF).
Слайд 25ОПЕРАЦИОННЫЕ СИСТЕМЫ
Применение алгоритма OPT
Зато мы можем сделать вывод, что для
того, чтобы алгоритм замещения был максимально близок к идеальному алгоритму,
система должна как можно точнее предсказывать обращения процессов к памяти.
Данный алгоритм применяется для оценки качества реализуемых алгоритмов.
Слайд 26ОПЕРАЦИОННЫЕ СИСТЕМЫ
Аппаратно-независимое управление виртуал. памятью
Выталкивание дольше всего не использовавшейся
страницы. Алгоритм LRU
Слайд 27ОПЕРАЦИОННЫЕ СИСТЕМЫ
Приближение к алгоритму OPT
Недавнее прошлое — хороший ориентир
для прогнозирования ближайшего будущего. Замещаем страницу, которая не использовалась в
течение самого долгого времени. Такой подход называется least recently used алгоритм (LRU).
8 pf
Слайд 28ОПЕРАЦИОННЫЕ СИСТЕМЫ
Реализация алгоритма LRU
Сравнивая примеры алгоритмов FIFO и LRU можно
увидеть, что использование LRU алгоритма позволяет сократить количество страничных нарушений.
LRU — хороший, но труднореализуемый алгоритм. Необходимо иметь связанный список всех страниц в памяти, в начале которого будут хранится недавно использованные страницы. Причем этот список должен обновляться при каждом обращении к памяти. Много времени нужно и на поиск страниц в таком списке.
Слайд 29ОПЕРАЦИОННЫЕ СИСТЕМЫ
Аппаратно-независимое управление виртуал. памятью
Выталкивание редко используемой страницы. Алгоритм
NFU
Слайд 30ОПЕРАЦИОННЫЕ СИСТЕМЫ
Программная реализация алгоритма близкого к LRU
Поскольку большинство современных процессоров
не предоставляют соответствующей аппаратной поддержки для реализации алгоритма LRU, хотелось
бы иметь алгоритм, достаточно близкий к LRU, но не требующий специальной поддержки.
Программная реализация алгоритма, близкого к LRU, — алгоритм NFU (Not Frequently Used).
Слайд 31ОПЕРАЦИОННЫЕ СИСТЕМЫ
Работа алгоритма NFU
Для него требуются программные счетчики, по одному
на каждую страницу, которые сначала равны нулю.
При каждом прерывании по
времени (а не после каждой инструкции) ОС сканирует все страницы в памяти и у каждой страницы с установленным флагом обращения увеличивает на единицу значение счетчика, а флаг обращения сбрасывает.
Кандидатом на освобождение оказывается страница с наименьшим значением счетчика, т.к. к ней реже всего обращались.
Слайд 32ОПЕРАЦИОННЫЕ СИСТЕМЫ
Недостаток алгоритма NFU
Главный недостаток алгоритма NFU состоит в том,
что он ничего не забывает. Страница, к которой очень часто
обращались в течение некоторого времени, а потом обращаться перестали, все равно не будет удалена из памяти, потому что ее счетчик содержит большую величину.
Например, в многопроходных компиляторах страницы, активно использовавшиеся во время 1-го прохода, могут надолго сохранить большие значения счетчика, мешая загрузке полезных в дальнейшем страниц.
Слайд 33ОПЕРАЦИОННЫЕ СИСТЕМЫ
Недостаток алгоритма NFU
Возможна небольшая модификация алгоритма, которая позволяет ему
«забывать». Достаточно, чтобы при каждом прерывании по времени содержимое счетчика
сдвигалось вправо на 1 бит, а уже затем производилось бы его увеличение для страниц с установленным флагом обращения.
Другим, уже более устойчивым недостатком алгоритма является длительность процесса сканирования таблиц страниц.
Слайд 34ОПЕРАЦИОННЫЕ СИСТЕМЫ
Аппаратно-независимое управление виртуал. памятью
Другие алгоритмы
Слайд 35ОПЕРАЦИОННЫЕ СИСТЕМЫ
Алгоритм Second-Chance
Модификация алгоритма FIFO, которая позволяет избежать потери
часто используемых страниц с помощью анализа флага обращений для самой
старой страницы. Если флаг установлен, то страница, в отличие от алгоритма FIFO, не выталкивается, а ее флаг сбрасывается, и страница переносится в конец очереди. Если первоначально флаги обращений были установлены для всех страниц, алгоритм Second-Chance превращается в алгоритм FIFO. Использовался в Multics и BSD Unix.
Слайд 36ОПЕРАЦИОННЫЕ СИСТЕМЫ
Другие алгоритмы
В компьютере Macintosh (MacOS) использован алгоритм NRU (Not
Recently-Used), где страница-«жертва» выбирается на основе анализа битов модификации и
ссылки.
Интересные стратегии, основанные на буферизации страниц, реализованы в VAX/VMS и Mach.
Слайд 37ОПЕРАЦИОННЫЕ СИСТЕМЫ
Аппаратно-независимое управление виртуал. памятью
ВОПРОСЫ
Слайд 38ОПЕРАЦИОННЫЕ СИСТЕМЫ
Вопрос 1
Таблица страниц процесса — это:
структура, используемая для отображения
логического адресного пространства в физическое при страничной организации памяти
структура, организованная
для учета свободных и занятых страничных блоков
структура, организованная для контроля доступа к страницам процесса
Слайд 39ОПЕРАЦИОННЫЕ СИСТЕМЫ
Вопрос 2
Какую стратегию управления памятью может реализовать алгоритм выталкивания
страниц LRU?
стратегию размещения страницы в памяти при наличии списка свободных
кадров;
стратегию упреждающей выборки, когда кроме страницы, вызвавшей исключительную ситуацию, в память также загружается несколько страниц, окружающих ее;
стратегию замещения.