Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Экзамен / OS_2014_otvety.docx
Скачиваний:
44
Добавлен:
15.02.2021
Размер:
1.65 Mб
Скачать
  1. Алгоритмы замещения страниц.

  1. Оптимальный (нереализуемый)

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

  1. Исключение недавно использованных страниц

Бит R – бит обращения, бит M – бит модификации.

Суть:

при запуске процесса R=0, M=0 для всех страниц.

При каждом прерывании по таймеру бит R сбрасывается

При возникновении ошибки отсутствия страницы ОС просматривает все дескрипторы страниц и делит их на четыре категории:

Класс 0: ни обращений, ни модификации

Класс 1: нет обращений, есть модификация

Класс 2: есть обращения, нет модификации

Класс 3: есть обращения, есть модификация

Алгоритм удаляет произвольную страницу низшего класса.

  1. Алгоритм «первый пришёл, первый ушёл» (FIFO)

Страницы хранятся в связанном списке, по порядку загрузки. Выгружается та страница, которая стоит в начале списка (загружена первой)

Достоинства:

  • простой алгоритм.

  1. «Второй шанс»

Как в FIFO, но если у первой страницы бит R=0, то она удаляется, а если бит R=1, то он сбрасывается, а страница отправляется в конец списка. Если ко всем страницам есть обращение – вырождается в FIFO.

  1. «Часы»

Циклический список. Если R=0, страница выгружается, на её место загружается новая. Если R=1, то R сбрасывается, стрелка идёт дальше.

  1. LRULeast recently used

  1. Связанный список всех страниц. Первая страница – только что использованная. Использовали – переместили в начало.

Недостатки:

  • очень долгий даже на аппаратном уровне.

  1. Страницам ввести счётчик. Удаляются страницы с наименьшим счётчиком

Использовали - +1.

0

0

0

0

0

0

0

0

0

0

1

1

0

1

1

0

0

0

0

0

0

0

0

0

0

Если использовали страницу, элементы строки k увеличиваются на 1, элементы столбца k обнуляются. Удаляются страницы с наименьшим значением строки.

  1. Алгоритм нечастого использования

Программный счётчик, при каждом прерывании от таймера ОС сканирует все находящиеся в памяти страницы, если R=1, счётчик увеличивается на 1. Таким образом, кандидатом на освобождение оказывается страница с наименьшим значением счетчика, как страница, к которой реже всего обращались. Главный недостаток алгоритма NFU состоит в том, что он ничего не забывает. Например, страница, к которой очень часто обращались в течение некоторого времени, а потом обращаться перестали, все равно не будет удалена из памяти, потому что ее счетчик содержит большую величину. Например, в многопроходных компиляторах страницы, которые активно использовались во время первого прохода, могут надолго сохранить большие значения счетчика, мешая загрузке полезных в дальнейшем страниц.

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

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

  1. «Рабочий набор»

Рабочий набор - множество страниц (к), которое процесс использовал до момента времени (t). Т.е. можно записать функцию w(k,t).

Рисунок 14. Зависимость рабочего набора w(k,t) от количества запрошенных страниц

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

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

Текущее виртуальное время (Tv) - время работы процессора, которое реально использовал процесс.

Время последнего использования (Told) - текущее время при R=1, т.е. все страницы проверяются на R=1, и если да то текущее время записывается в это поле.

Теперь можно вычислить возраст страницы (не обновления) Tv-Toldи сравнить с t, если больше, то страница не входит в рабочий набор, и страницу можно выгружать.

Получается три варианта:

  • если R=1, то текущее время запоминается в поле время последнего использования

  • если R=0 и возраст > t, то страница удаляется

  • если R=0 и возраст =< t, то эта страница входит в рабочий набор

  1. WSClock

Алгоритм основан на алгоритме "часы", но использует рабочий набор. Используются битов R и M, а также время последнего использования. Это достаточно реальный алгоритм, который используется на практике.

Рисунок 15. Работа алгоритма WSClock

Соседние файлы в папке Экзамен