Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по ОС 2012г.doc
Скачиваний:
10
Добавлен:
24.09.2019
Размер:
1.91 Mб
Скачать
  1. Алгоритмы замещения страниц.

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

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

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

Бит R – бит обращения, бит M – бит обращения.

Суть:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. «Часы»

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

Рисунок 17. Алгоритм "Часы"

  1. LRU – Least 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 бит, а уже затем производилось бы его увеличение для страниц с установленным флагом обращения.

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