Такая организация имеет ряд преимуществ по сравнению с непрерывной (несегментированной) организацией.
1. Упрощается обработка растущих структур данных. Если программисту заранее не известен размер структур данных, с которыми предстоит работать, и есть возможность использовать сегментацию, структуре данных может быть назначен ее собственный сегмент, размер которого операционная система будет увеличивать или уменьшать по мере необходимости. Если сегмент, размер которого следует увеличить, находится в физической оперативной памяти, и для его увеличения нет свободного места, операционная система может переместить его в большую область или выгрузить на диск (в этом случае увеличенный сегмент будет загружен вновь при первой возможности).
2. Программы могут изменяться и перекомпилироваться независимо от компиляции или компоновки всего множества программ (что осуществляется при использовании множественных сегментов).
3. Упрощается совместное использование команд и данных разными процессами. Программист может поместить команды утилиты или необходимые данные в отдельный сегмент, к которому будут обращаться другие процессы.
4. Улучшается защита. Так как сегмент представляет собой точно определенные множества программ или данных, программист или системный администратор могут просто и удобно назначать права доступа.
При сегментной организации памяти каждый процесс имеет собственную таблицу сегментов. При загрузке всех сегментов процесса в физическую оперативную память создается таблица сегментов процесса, которая также загружается в физическую оперативную память. В каждой записи таблицы сегментов указан начальный адрес соответствующего сегмента в физической оперативной памяти и его длина.
Типичным приемом является использование отдельной таблицы сегментов для каждого процесса. Записи таблицы сегментов в этом случае усложняются. Поскольку в оперативной памяти могут находиться не все сегменты процесса, в каждой записи требуется наличие признака присутствия, указывающего, располагается ли данный сегмент в физической оперативной памяти. Если сегмент расположен в физической оперативной памяти, то запись включает его начальный адрес и длину.
Еще один признак, необходимый в данной схеме, — признак модификации, указывающий, было ли изменено содержимое сегмента со времени его последней загрузки в физическую оперативную память. Если изменений не было, то при выгрузке сегмента нет необходимости в его записи на диск. Могут быть и другие управляющие признаки, например, при организации защиты или совместного использования на уровне сегментов.
Основной механизм чтения слова из оперативной памяти включает преобразование виртуального, или логического, адреса, состоящего из номера сегмента и смещения, в физический адрес с использованием таблицы сегментов. Поскольку таблица сегментов имеет переменную длину, зависящую от размера процесса, то нельзя рассчитывать на ее хранение в регистрах, и для хранения таблицы сегментов используется физическая оперативная память.
Можно предложить такую аппаратную реализацию описываемой схемы. Когда запускается определенный процесс, в некотором регистре хранится начальный адрес его таблицы сегментов. Номер сегмента из виртуального адреса используется в качестве индекса таблицы, позволяющего определить начальный адрес сегмента. Для получения физического адреса к начальному адресу сегмента добавляется смещение из виртуального адреса.