Перекрытие программ в памяти — КиберПедия 

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

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Перекрытие программ в памяти

2023-01-01 24
Перекрытие программ в памяти 0.00 из 5.00 0 оценок
Заказать работу

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

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

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

первый проход     ¾   70К;

второй проход     ¾   80К;

таблица символов ¾   20К;

общая часть          ¾   30К.

Для того чтобы разместить все эти компоненты в памяти одновременно, потребуется 200К. Если доступно только 150К, то процесс не может быть выполнен. Предположим теперь, что не требуется одновременного присутствия в памяти кодов первого и второго прохода. Тогда мы можем определить два оверлея (рис. 11.3):

А – таблица символов, общая часть, первый проход;

В – таблица символов, общая часть, второй проход.

Рисунок 11.3 – Пример оверлея

Добавим драйвер оверлея и разместим оверлей А в памяти. Когда первый проход закончится, драйвер оверлея разместит в памяти оверлей В.

Для оверлея требуется 120К, для оверлея В – 130К. Следовательно, можно запускать ассемблер на 150К оперативной памяти.

Таким образом, применение оверлеев позволяет значительно уменьшить объем оперативной памяти, необходимой программе.

Существует две проблемы, которые применение оверлеев не решает:

­ при обращениях к рекурсивным процедурам и процедурам, зависящим от данных, нельзя заранее сказать, можно ли сделать эти две процедуры перекрывающимися;

­ количество доступной ОП может динамически изменяться. В результате структура перекрытий какого-либо задания может не уместиться в оперативной памяти.

Свопинг

Процесс должен быть размещен в оперативной памяти, чтобы выполняться. Однако он может быть временно вытеснен из оперативной памяти во внешнюю память, и, затем, загружен обратно в оперативную память для выполнения работы. Вытеснение процесса во внешнюю память называется откачкой (swap out/ roll out), а загрузка из внешней памяти – подкачкой (swap in/ roll in). Совокупность действий по откачке и подкачке процессов называется подкачкой-от качкой или свопингом (swapping). Подкачка обычно требует специальных аппаратных средств настройки адресов, если только не ввести ограничение – процесс подкачивается на то место, из которого был откачан.

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

Свопинг полезен тем, что позволяет перераспределять память для процесса, не запуская его с самого начала. Потребность в перераспределении памяти может возникнуть по нескольким причинам:

­ появляется возможность выполнять больше малоактивных работ, чем может разместиться в памяти;

­ перераспределение может освободить память, занимаемую работой, требующей вмешательства оператора;

­ перераспределение позволяет более эффективно использовать другие ресурсы;

­ перераспределение позволяет освободить память для задач с более высоким приоритетом.

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

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

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

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

В Windows NT используется специальная аппаратная поддержка свопинга.


Поделиться с друзьями:

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.