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



Первые ВС требовали связного распределения памяти для программ во время их выполнения: каждой программе выделялся один сплошной блок ячеек памяти.

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

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

Преимущества распределения памяти непрерывными фиксированными разделами состоят в следующем:

¨ относительная простота реализации процедур управления,

¨ легкость реализации средств защиты (защита с помощью “замков и ключей”) в мультипрограммных системах;

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

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

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

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

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

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

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


Дата добавления: 2016-01-05; просмотров: 24; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!