Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2459

.pdf
Скачиваний:
0
Добавлен:
15.11.2022
Размер:
1.64 Mб
Скачать

поддержки со стороны процессора. Рассмотрим их более подробно.

3.3.1. Дисциплина LRU – выталкивание дольше всего неиспользуемой страницы

Дисциплина LRU (Least Recently Used) предполагает первоочередное замещение той страницы, к которой дольше всего не было обращений.

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

На практике, дисциплина LRU обеспечивает очень хорошее приближение к оптимальной стратегии, но сложна в реализации.

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

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

51

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

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

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

3.3.2. Дисциплина «второй шанс» – модификация дисциплины FIFO

Данная дисциплина очень проста в реализации и устраняет главный недостаток дисциплины FIFO – потенциальную возможность замещения страницы, которая все еще находится в активном использовании, несмотря на длительный период нахождения в ОЗУ. Основная идея дисциплины «второй шанс» заключается в использовании аппаратно поддерживаемого процессором флага обращения в записи таблицы трансляции адресов (см. рис. 12).

При выборке новой страницы в ОЗУ, ссылка на нее заносится в конец списка загруженных страниц (как в дисциплине FIFO), и флаг обращения в записи таблицы трансляции, соответствующей данной странице, очищается.

52

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

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

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

53

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

3.3.3. Дисциплина NRU – выталкивание страницы, не используемой в последнее время

Дисциплина замещения NRU (Non Recently Used) предполагает первоочередное выталкивание из ОЗУ страницы, к которой не было зафиксировано обращений за некоторое время наблюдения, а при наличии нескольких таких страниц в первую очередь выталкиваются те из них, которые не модифицировались после загрузки в ОЗУ.

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

54

Для реализации дисциплины NRU в полном объеме необходима аппаратная поддержка со стороны процессора. Требуется поддержка флага обращения и флага модификации в записях таблицы трансляции адресов (см. рис. 12). Возможна также упрощенная реализация NRU с использованием только флага обращения.

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

 

 

 

Таблица

 

Группы страничных кадров

 

 

флаг

флаг

 

категория

 

модификации

обращения

 

 

 

страницы

к странице

 

1

 

0

0

 

2

 

1

0

 

3

 

0

1

 

4

 

1

1

 

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

55

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

Упрощенная реализация дисциплины NRU предусматривает разделение страниц только на две группы

– страницы, к которым было обращение за последний интервал наблюдения, и страницы, к которым обращений не было.

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

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

56

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

Часовой алгоритм можно рассматривать как модификацию NRU, которая позволяет исключить длительные задержки из-за анализа большого объема данных об обращениях к памяти (заметим, что другие авторы, в частности Э. Таненбаум, считают часовой алгоритм модификацией дисциплины «второй шанс»). Чтобы исключить длительные задержки часовой алгоритм использует различные интервалы времени для накопления и анализа данных об обращениях к памяти для различных страниц. Решения о возможности замещения выносится для каждой страницы отдельно в разное время (а не для всех страниц сразу, как в NRU). Решение по отдельной странице не требует анализа большого объема данных, следовательно, на него не тратится много времени. Безусловно, общие затраты времени на анализ всех страниц могут оказаться даже больше, чем в NRU, но это время потребляется в виде множества коротких интервалов, в перерывах между которыми программы могут нормально работать.

Свое название часовой алгоритм получил от графической интерпретации его работы. Представим все страницы, загруженные в ОЗУ, расположенными на окружности и представим стрелку, указывающую из центра окружности на одну из страниц, как показано на рис. 13.

57

страница

страница страница

страница

 

страница

 

 

 

страница

страница

A=?

D=?

страница

страница

страница страница

страница

Рис. 13. Список страничных кадров и указатель часового алгоритма

Алгоритм принимает решение о возможности замещения страницы, на которую указывает стрелка. Для чего в первую очередь проверяется состояние флага обращений (флаг ‘A’ в записи таблицы трансляции). Если этот флаг установлен, то страница считается используемой и не подлежащей замещению. Часовой алгоритм сбрасывает у этой страницы флаг обращений и через некоторый интервал времени переходит к анализу следующей страницы.

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

58

случае группы из страниц) является истечение заданного

таймаута

 

. Алгоритм

возвращается к

просмотру

страницы

через время

 

, где

 

– число страниц,

= /

 

Длительность

интервала

времени

загруженных в ОЗУ.

= /

 

>

 

 

соответствует интервалу накопления данных об обращениях к памяти.

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

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

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

59

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

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

часовой алгоритм с двумя стрелками (рис. 14).

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

60

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