Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 1-8 / ОС_04.doc
Скачиваний:
111
Добавлен:
04.04.2013
Размер:
179.2 Кб
Скачать

4.3.3 Организация мультипрораммного режима: распределение переменными разделами

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

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

Рис. 4.10 Начальное распределение разделов при мультипрограммировании с переменными разделами.

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

Рис. 4.11 Образование «дыр» в памяти при мультипрограммировании с переменными разделами.

4.4 Объединение соседних свободных участков памяти

Когда в мультипрограммной системе с переменными разделами некоторое задание завершается, система может проверить, не соседствует ли освобожденный участок памяти с другими свободными участками («дырами»). Если соседствует, то система может в список свободной памяти занести либо (1) новый свободный участок, либо (2) единый свободный участок, полученный объединением новой «дыры» с соседними.

Процесс объединения соседних «дыр» с образованием единого большого свободного участка называется слиянием и иллюстрируется на рис. 4.12. Благодаря объединению «дыр» мы формируем непрерывные блоки памяти максимально возможного размера.

Рис. 4.12 Объединение «дыр» в памяти при мультипрограммировании с переменными разделами.

4.5 Уплотнение памяти

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

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

Рис. 4.13 Уплотнение памяти при мультипрограммировании с переменными разделами.

Эта проблема решается при помощи метода, называемого уплотнением памяти (рис. 4.13) и состоящего в перемещении всех занятых участков к одному или другому краю основной памяти. Благодаря этому вместо многочисленных небольших «дыр», обычных для мультипрограммирования с переменными разделами, мы получаем единый большой свободный участок памяти. А уж если вся свободная память представлена одним участком, то ожидающее задание может выполняться, если ему требуется память, не превышающая размера этого единого полученного в результате уплотнения участка. Иногда уплотнение памяти образно называют «утряской памяти», а среди программистов бытует термин «сбор мусора».

Уплотнение памяти имеет свои недостатки:

  • Оно отнимает ресурсы системы, которые можно было бы использовать продуктивно.

  • Во время уплотнения памяти система должна прекращать любые другие работы.

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

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

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

Соседние файлы в папке Лекции 1-8