Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс с 1 по 294.doc
Скачиваний:
13
Добавлен:
16.04.2019
Размер:
6.2 Mб
Скачать

1) Трансляция сегмента, при которой логический адрес, состоящий из селектора сег­мента и смещения (относительного адреса внутри сегмента), преобразуется в линейный адрес.

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

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

Трансляция происходит незаметно для прикладного программиста. На рис. 3.12 пред­ставлены два шага трансляции на высоком уровне абстракции. Этот рисунок и дальней­шее содержание этой главы представляют упрощенный взгляд на механизм адресации. На самом деле механизм адресации включает также механизмы защиты памяти. Аспекты за­щиты рассмотрены в п. 3.4.

3.3.1. Трансляция сегментов

На рис. 3.13 показано более детально то, как процессор преобразует логический адрес в линейный.

При выполнении этого шага трансляции процессор использует следующие структуры данных:

  • дескрипторы

  • таблицы дескрипторов;

  • селекторы;

  • регистры сегментов.

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

На рис. 3.14 приведены два общих формата дескрипторов МП фирмы «Intel».

Дескрипторы всех типов имеют один из этих форматов. Дескрипторы сегментов содер­жат следующие поля.

База: задает расположение сегмента в 4-Гбайтном линейном адресном пространстве. Процессор объединяет три фрагмента поля База из формата дескриптора для образова­ния единого адреса.

Предел: задает размер сегмента. В результате объединения процессором двух частей поля предела дескриптора получается 20-разрядное значение. Процессор интерпретирует поле пре­дела двояко, в зависимости от состояния разряда дробности G:

в байтах, для задания границы до 1 Мбайта;

  • в 4-Кбайтных единицах для задания предела до 4 Гбайт. При загрузке предел сдвигает­ся влево на 12 разрядов, и младшие 12 разрядов устанавливаются в «1».

Разряд дробности (G): указывает единицы, в которых интерпретируется предел. Когда разряд нулевой (G = 0), предел интерпретируется в байтах, когда установлен (G = 1) - предел интерпретируется в единицах по 4 Кбайта.

Тип: устанавливает различия между разными видами дескрипторов.

DPL (уровень привилегий дескриптора): используется механизмом защиты.

Разряд присутствия сегмента (Р): если этот разряд нулевой, дескриптор не приго­ден для преобразования адресов; процессор вырабатывает исключение в то время, когда селектор для этого дескриптора загружается в сегментный регистр. На рис. 3.15. приведен формат дескриптора для случая нулевого значения разряда присутствия. Операционная система может использовать поля, помеченные как «пригодны». Операционная система, которая использует идею сегментированной виртуальной памяти, устанавливает разряд Р в «О» в одном из двух случаев:

  • когда линейное адресное пространство, занимаемое сегментом, не преобразуется ме­ханизмом страничной организации; когда сегмента нет в основной памяти.

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

Таблицы дескрипторов. Дескрипторы сегментов хранятся в таблицах двух видов: