Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700363.doc
Скачиваний:
16
Добавлен:
01.05.2022
Размер:
3.69 Mб
Скачать

Часовой алгоритм

Часовой алгоритм является еще одной модификацией дисциплины NRU, направленной на упрощение ее реализации и повышение удобства использования.

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

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

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

Рис.34. Список страничных кадров часового алгоритма

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

  • Первый проход алгоритма: указатель последовательно проходит по страничным кадрам в поисках страничного кадра, у которого оба флага сброшены; если после просмотра всех страничных кадров такая комбинация флагов не была найдена, то выполняется второй проход алгоритма.

  • Второй проход алгоритма: указатель последовательно проходит по страничным кадрам в поисках страничного кадра, у которого сброшен только флаг обращения; при этом, у посмотренных страничных кадров флаг обращения сбрасывается.

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

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

Часовой алгоритм обеспечивает неплохие результаты, но при большом объеме ОЗУ, когда количество страничных кадров велико, часовой алгоритм теряет эффективность, т.к. для просмотра всех страничных кадров требуется слишком много времени.

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

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

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

В таких условиях более эффективным оказывается модификация часового алгоритма, известная как часовой алгоритм с двумя стрелками (рис. 35).

Рис.35. Часовой алгоритм с двумя стрелками

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