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

Пусть необходимо переместить страницу в оперативную память. Если есть свободный страничный блок, то не возникает никаких трудностей. Но, рано или поздно, все страничные блоки будут заняты, и придется решать, какую страницу надо вытеснить. Стратегия принятия таких решений называется правилом вытеснения страниц. Эти правила применимы и для сегментов.

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

Рассмотрим наиболее известные правила вытеснения.

33Случайный выбор (Random)

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

34«Первым пришел  первым ушел» (fifo)

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

Стратегию FIFO можно применять и локально и глобально. Ее легко реализовать: физические страницы (пусть их количество равно k) образуют список из k элементов, упорядоченный по времени подкачки страниц. Указатель списка показывает самую новую страницу. Каждый раз, когда нужно подгрузить какую-то новую страницу, содержимое указателя складывается по модулю k с единицей, и, страница, на которую указывает полученное значение, замещается.

Эта стратегия неудачно работает, когда система плотно загружена. Кроме того, хотя порядок выборки команд носит последовательный характер, ссылки на данные совершенно непоследовательны. Поэтому, хотя эта стратегия и хороша с точки зрения простоты реализации, она существенно ограничивает производительность системы.

35Вытеснение по давности использования (lru)

Удаляется страница, к которой самое продолжительное время не было обращений (не было обращений в недавнем прошлом, не будет и в будущем).

Стратегию довольно трудно реализовать. Например, система может вести таблицу, в которой каждой странице ставится в соответствие время последнего обращения к странице. Время может учитываться на основе логических часов. Логические часы увеличивают свое значение при каждом обращении к памяти. Каждый раз, когда осуществляется ссылка на страницу, значение регистра логических часов заносится в соответствующую строку в таблице. Заменяется страница с наименьшим значением в отмеченном поле путем последовательного просмотра всей таблицы страниц (сканирования).

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

Стратегия в большинстве случаев работает хорошо. Основной ее недостаток – дорогостоящая реализация. Поэтому эта стратегия требует аппаратной поддержки.

LRU – наиболее распространенная стратегия вытеснения страниц.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]