Информатика и вычислительная техника



Организация управления основной памятью ЭВМРаспределение и защита памятиВиртуальная память - часть 3


177

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

На рис. 8.7 показана технология формирования исполнительного (физического) адреса при сегментной организации памяти. Для каждой n - ой программы, подлежащей выполнению, в адресном поле команд указывается относительный адрес заданием номера сегмента S и смещения i.

Рис. 8.7. Структурная схема преобразования адресовпри сегментной организации памяти

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

178

Использование сегментации программ позволяет уменьшить фрагментацию памяти, но полностью фрагментация не устраняется, так как остаются фрагменты, длина которых меньше длины сегмента программы.

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

Сегментно - страничная организация добавляет еще один уровень в структуре адресного пространства программ. Теперь иерархия в организации размещения программ состоит из четырех ступеней: 1) программа, 2) сегмент, 3) страница, 4) байт. В каждой команде структура адреса содержит три составляющих; S, P, i, где S - имя (номер) сегмента внутри адресного пространства программы; Р - имя (номер) страницы внутри сегмента; i - адрес байта относительно начала страницы.


Содержание  Назад  Вперед