Сегментная организация виртуальной памяти

Такая организация имеет ряд преимуществ по сравнению с непрерывной (несегментиро­ванной) организацией.

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

2. Программы могут изменяться и перекомпилироваться независимо от компиляции или компоновки всего множества программ (что осуществляется при использовании множественных сегментов).

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

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

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

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: