Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[Проектирование операционных систем] - Курс лек....doc
Скачиваний:
22
Добавлен:
14.11.2018
Размер:
347.14 Кб
Скачать

Подсистема управления памятью

Любая ОС в своем составе имеет подсистему управления памяти. Так как сама ОС требует эту подсистема.

  • Алгоритмы распределения памяти существенно зависит от класса вычислительных машин.

  • Для персональных компьютеров на первое место вышло удобство предоставления доступа.

  • Для больших и очень больших вычислительных машин основным требованием является эффективное использование памяти.

  • Некоторые операционные системы стремятся предоставить пользователю память с улучшенными свойствами (например с помощью виртуальной памяти)

  • Оперативная память является особым ресурсом. Предоставление оперативной памяти без предоставления центрального процессора – бессмысленно – следовательно распределение памяти должно быть согласованно с распределением процессора.

Два уровня распределения оперативной памяти

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

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

Краткосрочное планирование: Распределение памяти внутри зоны. Внутри зоны память распределяется динамически при краткосрочном планировании.

Задачи распределения памяти

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

Задача распределения памяти состоит из:

  • Учет.

  • Выделение.

  • Возврат.

  • Дефрагментация.

Учет

Учету могут подвергаться или только свободные фрагменты, или и свободные, и распределенные. Результат учета – цепочки фрагментов памяти. Каждому фрагменту соответствует его дескриптор.

Обычно дескриптор содержит следующую информацию:

  • Адрес фрагмента (необязательно).

  • Размер фрагмента.

  • Адрес следующего фрагмента в цепочке.

Цепочек фрагментов, как свободных, так и распределенных, может быть несколько.

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

Цепочки могут быть упорядоченными, а могут быть и не упорядоченными.

Выделение

Выделение памяти происходит по явному запросу программы. Запрос удовлетворяется за счет свободных фрагментов памяти. Цепочка свободных фрагментов выбирается в соответствии с размером запрашиваемой области.

Алгоритм выделения:

  • Выбор цепочки содержащий свободные фрагменты минимально достаточного размера.

  • Поиск подходящего фрагмента.

  • Если фрагмент не найден, перейти к пункту 7.

  • Если выбранный фрагмент по размеру превосходит запрошенный, разбить выбранный фрагмент на две части.

    1. Первая часть, размер которой соответствует запросу будет предоставлена программе.

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

  • Включить предоставленный программе фрагмент в цепочку выделенных блоков.

  • Вернуть управление программе.

  • Выбрать цепочку свободных фрагментов большего размера и перейти к пункту 2.

  • Если цепочки исчерпаны, отказать программе в удовлетворении запроса.

Возможно, что при удовлетворении запроса, ОС должны выполнить дефрагментацию.

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

Возврат

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

При выполнении возврата, так же возможно выполнение дефрагментации.

Дефрагментация

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

Критерии оценки качества решения задачи распределения памяти

  • Затраты времени ОС на решение этой задачи.

  • Потери памяти.

Примеры реализации задачи (OS IBM)

Режим MFT

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

Режим MDT

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

Ни в режиме MFT, ни в режиме MDT работа не может выйти за границу своей зоны. Таким образом, если программист не верно оценил объем требуемой памяти, программа выполнится не может.