Для каждой задачи память сегментной организации предоставляет возможность разместить в ней сегменты разной длины, содержащие информацию задачи. В этих сегментах находятся законченные программные объекты – модули процедур и модули данных. При программировании предполагается, что все эти объекты находятся на одном уровне структурированной виртуальной памяти задачи и в программе решения задачи не требуется осуществлять их перемещение между оперативной и внешней памятью (это перемещение будет выполнять операционная система). То есть виртуальная память задачи структурирована как набор модулей (сегментов).
Сегменты задачи могут располагаться в любом месте физической оперативной памяти, защищены друг от друга и от сегментов других задач и вызываются при необходимости их использования в задаче в оперативную память (на свободное место или вместо каких-либо других сегментов этой или других задач) операционной системой.
Виртуальные адреса, используемые в программе задачи, состоят из виртуального номера сегмента и смещения (номера ячейки) в этом сегменте (рис 13.). Виртуальный сегментный адрес аппаратно преобразуется в физический адрес при непосредственном обращении в оперативную память с использованием таблицы соответствия виртуальных номеров сегментов задачи начальным физическим адресам их расположения в оперативной памяти. К такому физическому адресу, соответствующему номеру сегмента в виртуальном адресе, прибавляется величина смещения, указанная в виртуальном адресе. Полученный физический адрес используется для непосредственного обращения к оперативной памяти.
|
|
В указанной таблице соответствия помещено также значение длины сегмента, используемого в виртуальном адресе. Указание смещения в сегменте, большего этого значения не допускается. Таким образом обеспечивается и защита сегментов друг от друга.
Существенным преимуществом сегментной организации виртуальной памяти является возможность уникальной защиты помещаемого в сегмент программного объекта по способу обращения к нему. Так, например, модуль процедуры должен быть защищен от возможности осуществления записи в него; запись в модуль данных может быть либо запрещена, либо разрешена. Информация об уникальной защите сегмента также размещается в таблице соответствия. Там же размещается и признак наличия виртуального сегмента в оперативной памяти.
Линейную таблицу соответствия виртуальных номеров сегментов задачи и их мест расположения в физической оперативной памяти (длина такой таблицы соответствует количеству виртуальных сегментов задачи) создает операционная система ЭВМ, поскольку именно она размещает требуемые сегменты в оперативной памяти, передавая их в нее из внешней памяти (выполняется также обратная перепись во внешнюю память сегментов, содержимое которых изменилось, в случае, если их место расположения отведено для размещения новых сегментов. Размещение таблицы соответствия в оперативной памяти требует при замене виртуального адреса на физический одного дополнительного обращения к оперативной памяти, то есть 100% накладных расходов. Существенно избежать этих накладных расходов удается за счет размещения информации из таблицы соответствия в быстродействующих регистрах, в каждом из которых находится как виртуальный номер сегмента, так и алрес его размещения в оперативной памяти. Ассоциативный поиск адреса размещения виртуального сегмента в оперативной памяти происходит в этих регистрах по его виртуальному номеру практически без задержки. Свойство “локальности” программы позволяет почти всегда успешно выполнять такой поиск и осуществлять автоматическую замену виртуального адреса на физический при относительно небольшом числе регистров, содержащих информацию из таблицы соответствия. Редкий “промах” приводит к переписи нужной строки из таблицы соответствия, находящейся в оперативной памяти, в регистр “быстродействующей” таблицы. Выбор номера регистра производится аппаратно.
|
|
Значительным недостатком организации виртуальной памяти, разделяемой на сегменты разной длины, является наличие “внешней фрагментации” оперативной памяти, то есть незанятых участков памяти между сегментами. Этот недостаток проявляется при необходимости расположить в памяти новый сегмент задачи и отсутствии свободного фрагмента оперативной памяти для его размещения. В этом случае приходится принимать меры к освобождению для нового виртуального сегмента участка памяти необходимой длины за счет возможной подвижки в оперативной памяти других виртуальных сегментов или переписи информации (если она изменялась) из освобождаемого участка памяти во внешнюю память.