Связанное и несвязанное распределение памяти.

Самые первые ЭВМ требовали связного распределения – каждая программа должна была занимать один блок ячеек.

Свободная память

Программа пользователя

Операционная система

Защита памяти осуществлялась при помощи одного регистра, который позволял отделить программу пользователя от ОС.

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

Основные способы распределения памяти.

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

Методы без перемещения сегментов:

1. с фиксированными разделами

2. с динамическими разделами

3. с перемещаемыми разделами.

Методы с перемещением сегментов:

1. со страничным распределением

2. с сегментным распределением

3. с сегментно-страничным распределением.

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

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

Динамические разделы. В общем случае память не делится на разделы, сначала вся память для приложений свободна, каждому процессу на этапе создания выделяется необходимая память, после завершения вся память освобождается. Таким образом в произвольный момент времени ОП представляет собой последовательность занятых и свободных участков. Функции ОС: ведение таблиц свободных и занятых областей памяти; при создании новых процессов – анализ требуемой памяти, просмотр таблицы свободных областей и выбор раздела необходимых размеров; сама загрузка программы и корректировка таблиц свободных и занятых областей; после завершения процесса корректировка таблиц. Недостаток – фрагментация памяти – наличие большого числа несмежных свободных участков. Распределение памяти с динамическими разделами лежит в основе подсистем управления памяти многих мультипрограмм 60–70 годов.

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

 

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

 

 

30 марта 2012 г.