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

Замещение с немедленной перезаписью и замещение с буферизацией

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

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

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

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

Замещение с локальной и глобальной областью видимости

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

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

3.4 Управление виртуальной памятью

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

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

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

Выборка в системе виртуальной памяти

В настоящее время в системе виртуальной памяти наибольшее распространение получила стратегия выборки по требованию. Это объясняется следующим:

  • накладные расходы системных ресурсов для прогнозирования использования страниц памяти зачастую превосходят достигаемый выигрыш;

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

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

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