Сегментная, страничная и сегментно-страничная организация памяти

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

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

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

? Если сегмент задачи находится в оперативной памяти, то об этом делается пометка в дескрипторе. В этом случае в поле адреса записывается адрес физической памяти, с которого сегмент начинается, а в поле длины сегмента (limit) указывается количество адресуемых ячеек памяти.

? Также в дескрипторе сегмента, как правило, содержатся данные о типе сегмента, правах доступа к нему, отметка об обращениях к данному сегменту.

? При передаче управления следующей задаче операционная система должна занести в соответствующий регистр адрес таблицы дескрипторов сегментов этой задачи.

? В оперативной памяти размещают не все сегменты задачи, а только задействованные в данный момент.

? Перемещение сегментов из оперативной памяти на жесткий диск и обратно часто называют свопингом сегментов.

Дисциплины замещения сегмента:

• правило FIFO (First In First Out — первый пришедший первым и выбывает); • правило LRU (Least Recently Used — дольше других неиспользуемый);

• правило LFU (Least Frequently Used — реже других используемый);

• случайный (random) выбор сегмента.

Преимущества метода:

1) можно размещать программу в памяти не целиком, а «по мере необходимости»;

2) некоторые программные модули могут быть разделяемыми.

Недостатки:

1) для доступа к искомой ячейке памяти приходится тратить много времени;

2) фрагментация;

3) много памяти и процессорного времени теряется на размещение и обработку дескрипторных таблиц.

Пример использования сегментного способа – операционная система OS/2 первого поколения

Страничный способ

? Оперативная память разбивается на физические страницы, а программа — на виртуальные страницы (размер их совпадает). Часть виртуальных страниц задачи размещается в оперативной памяти, а часть — во внешней. Обычно место во внешней памяти, в качестве которой в абсолютном большинстве случаев выступают накопители на магнитных дисках называют файлом подкачки, или страничным файлом (paging file). Иногда этот файл называют swap-файлом.

? Не поместившиеся страницы размещаются во внешней памяти, которая в данном случае служит расширением оперативной.

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

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

? Если бит присутствия имеет единичное значение, значит данная страница размещена в оперативной, а не во внешней памяти, и мы в дескрипторе имеем номер физической страницы, отведенной под данную виртуальную.

? Если же бит присутствия равен нулю, то в дескрипторе мы будем иметь адрес виртуальной страницы, расположенной во внешней памяти.

? При обращении к виртуальной странице, не оказавшейся в данный момент в опepaтивной памяти, возникает прерывание, и управление передается диспетчеру памяти, который должен найти свободное место. Обычно предоставляется первая же свободная страница. Если свободной физической страницы нет, то диспетчер памяти по одной из вышеупомянутых дисциплин замещения (LRU, LFU, FIFO, случайный доступ) определит страницу, подлежащую расформированию или сохранению во внешней памяти.

? Пробуксовка — это ситуация, при которой загрузка нужной страницы вызывает перемещение во внешнюю память той страницы, с которой мы работаем.

? Рабочее множество – это множество «активных» страниц задачи (страниц, к которым было обращение за определенный интервал времени), которые не подлежат выгрузке.

? Достоинство страничного способа – минимальная фрагментация. Недостатки:

1) страничная трансляция виртуальной памяти требует существенных накладных расходов;

2) программы разбиваются на страницы случайно, без учета логических взаимосвязей.

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

? Загрузка задачи выполняется операционной системой постранично, при этом часть страниц размещается в оперативной памяти, а часть – на диске.

? Для каждого сегмента создается своя таблица страниц. Для каждой задачи создается таблица сегментов.

? Виртуальный адрес состоит из трех компонентов: сегмента, страницы и индекса.

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

Наши рекомендации