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

Управление резидентными множествами на основе рабочих множеств

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

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

  • глобальное замещение, динамическое резидентное множество;

  • локальное замещение, фиксированное резидентное множество;

  • локальное замещение, динамическое резидентное множество.

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

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

Глобальное замещение, динамическое резидентное множество

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

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

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

Локальное замещение, фиксированное резидентное множество

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

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

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