Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 10.Стратегии управления памятью.doc
Скачиваний:
18
Добавлен:
18.05.2015
Размер:
62.46 Кб
Скачать

Стратегии выталкивания страниц

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

Выталкивание случайной страницы

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

Выталкивание первой пришедшей страницы (FIFO)

First-in-first-out

Если каждой старанице в момент поступления в ОП присваивать временную метку, то при необходимости удаления страниц выбирается та, которая находилась в памяти дольше других, т.е. будет реализовываться принцип FIFO. Достоинство этой стратегии в простоте реализации и предположении того, что если страница достаточно долго находилась в ОП, то она уже могла быть использована. Хотя последнее далеко не всегда справедливо, т.к. факт длительного пребывания страницы в ОП может означать то, что она постоянно находится в работе и ее удаление вызовет необходимость вновь ее переписывать в ОП.

Самостоятельно рассмотреть вопрос: “Аномалия FIFO”[Дейтел р.9.3.3.1]

Выталкивание дольше всего не использовавшейся страницы (LRU)

Least-recently-used

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

Выталкивание реже всего используемой страницы (LFU)

Least-frequently-used

Близкой к выше рассмотренной стратегии LRU является стратегия LFU, согласно которой выталкивается наименее интенсивно используемая страница. Таким образом здесь должна фиксироваться частота обращений к каждой странице . Хотя интуитивно такой подход кажется оправданным, но, также как и предыдущий, не гарантирует от нерационального выбора страниц.

Выталкивание не использовавшейся в последнее время страницы (NUR)

Not-used-recently

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

Поскольку желательно заменять ту страницу, которая в период нахождения в ОП не изменялась, то реализация NUR предусматривает использование двух признаков на страницу:

  • Бит-признак обращения 0 - если обращений не было;

1 - если обращения были;

  • Бит-признак модификации 0 - если страница не изменялась;

1 - если изменялась.

При поиске страницы для выталкивания проверяется сначала ее бит-признак обращения=0, поскольку мы пытаемся приблизиться здесь к алгоритму LRU, то первым кандидатом на выталкивание будут страницы, к которым вообще не было обращений. При отсутствии таковых, будут рассматриваться, как кандидаты на выталкивание страницы, где бит-признак модификации=0.

Следует отметить, что из рассмотренных выше стратегий NUR является и не слишком дорогой и достаточно эффективной.

Рабочее множество

Working set of pages

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

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

t-w w t

Время выполнения

процесса

Страницы, к которым обращается

процесс в течение этого временного

интервала, составляют рабочее

множество этого процесса W(t,w)

Рис. 15 Определение рабочего множества страниц процесса

Рабочее множество страниц процесса W(t,w) в момент времени t есть набор страниц, к которым процесс обращается в течение интервала времени процесса от t-w до t, где время процесса - это время, в течение которого процесс имеет в своем распоряжении ЦП. Переменная w называется размером окна рабочего множества, причем выбор величины этого окна играет решающую роль с точки зрения эффективности стратегии управления памятью по рабочему множеству.

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

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

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