Студопедия — Использование дескрипторных таблиц GDT и LDT
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Использование дескрипторных таблиц GDT и LDT






при формировании физических (линейных) адресов.

 

Основное отличие модели сегментации памяти в процессорах, функционирующих в защищенном режиме работы, от процессора 8086 заключается в том, что теперь пользовательская программа не может свободно обращаться по любому адресу в адресном пространстве памяти. Каждая программа, независимо от уровня ее привилегий, не может обращаться к сегменту до тех пор, пока он не «описан» для программы. Программе не разрешается обращаться по любому адресу, который она может сформировать. Кроме того, в задании атрибутов сегментов, которые зафиксированы в их дескрипторах, предоставляется довольно большая свобода. Например, базовый адрес может быть любым (не требуется его выравнивания на границу параграфа т.е. с градацией 16 байт), а размер сегмента варьируется от одного байта до всего адресуемого пространства в 4Гбайт (при страничной грануляции). Размер сегмента в 4Гбайта говорит о том, что с помощью эффективного 32 разрядного адреса инструкции, можно «пройти» все адресное пространство, не модифицируя содержимое сегментного регистра. Такая свобода определения сегментов предоставляет программисту полное управление использованием памяти и позволяет удовлетворить практически любые запросы памяти.

Схема формирования линейного адреса в защищенном режиме работы МП семейства х86 с привлечением селектора и смещения в сегменте (эффективного адреса), получаемого из текущей инструкции, приведена на рисунке III.12. Как уже упоминалось, совокупность селектора и эффективного адреса, которую иногда называют, также, указателем адреса, определяет логический или виртуальный адрес операнда.Селектор представляет собой 16 разрядный двоичный код, заносимый специальной инструкцией в соответствующий сегментный регистр. Селектор состоит из трех полей (см. рис.III.11).

15 2 1 0

Index TI RPL

 

Рис. III.11 Формат селектора сегмента в МП 80286+

 

Младшие два бита образуют поле RPL (Requested Privilege Level) – уровень привилегий запросчика. Они используются при организации системы защиты от несанкционированного доступа к сегментам памяти. Следующий бит– TI (Table Indicator) - определяет тип дескрипторной таблицы, из которой должен выбираться дескриптор (TI = 0 ® из таблицы GDT, TI = 1® из таблицы LDT). Остальные 13 бит определяют номер запрашиваемого дескриптора в соответствующей дескрипторной таблице.

Базовый адрес LDT(из дескриптора LDT)

 

Рис.III.12. Формирование линейного адреса в МП семейства Х86

 

Физический же адрес дескриптора в общем адресном пространстве определяется путем суммирования базового (начального) адреса дескрипторной таблицы с номером этого дескриптора, умноженным на 8 (поскольку каждый дескриптор занимает адресное пространство, равное 8 байтам). Базовый же адрес дескрипторной таблицы извлекается из соответствующего системного регистра. При TI = 0, используется системный регистр GDTR, а именно, содержимое его поля базового адреса.

Выбрав из оперативной памяти по полученному физическому адресу дескриптор, процессор выделяет из него базовый адрес запрашиваемого сегмента, и суммирует его со смещением (эффективным адресом, либо значением IP, SP, SI или DI), получаемым непосредственно из инструкции (команды) выполняемой программы. Полученное значение адреса является линейным а, в случае выключенного режима страничного преобразования, одновременно и физическим адресом, выдаваемым процессором непосредственно на адресную шину компьютера.

Если TI = 1, то это означает, что запрашиваемый дескриптор находится в локальной дескрипторной таблице LDT. В этом случае надо предварительно определить, где находится сегмент самой LDT. Для этого процессор обращается к 16 разрядному системному регистру LDTR. В нем находится селектор, определяющий тот дескриптор в GDT, который описывает данный сегмент LDT. Выбрав по этому селектору, описанным выше способом, из GDT дескриптор сегмента LDT, процессор извлекает из него базовый адрес таблицы LDT. Затем он возвращается и анализирует селектор, который занесен в сегментный регистр. Считывает с него значение индекса, умножает на 8 и, суммируя его с базовым адресом таблицы LDT, находит базовый адрес сегмента, где находится адресуемый операнд. Нахождение искомого адреса самого операнда осуществляется так же, как и в случае нахождения сегмента в таблице GDT.

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

1. Взять селектор из сегментного регистра.

2. Если бит TI показывает на GDT (TI = 0), взять из GDTR адрес дескрипторной таблицы и перейти к шагу 4.

3. Если бит TI показывает на LDT (TI = 1), то:

а) взять селектор сегмента LDT из регистра LDTR;

б) выделить в селекторе поле индекса (старшие 13 разрядов) и умножить индекс на 8 (сдвинуть на 3 разряда влево);

в) прибавить результат к базовому адресу из регистра GDTR;

г) считать из памяти адресуемый дескриптор;

д) выделить из этого дескриптора базовый адрес сегмента,

содержащего таблицу LDT. Полученный базовый адрес является

адресом дескрипторной таблицы LDT. Перейти к шагу 4.

4. Выделить в селекторе сегментного регистра поле индекса (старшие 13

разрядов), умножить на 8 содержащийся в нем код, и прибавить к

базовому адресу соответствующей дескрипторной таблицы. Считать

из памяти дескриптор по этому адресу.

5.Выделить из дескриптора базовый адрес искомого сегмента.

6. Прибавить значение смещения в сегменте (из инструкции) к

базовому адресу искомого сегмента. Это и будет требуемый линейный

адрес. Он же является и физическим адресом, если не включено

страничное преобразование.

7. Осуществить обращение к памяти по полученному адресу.

Рассматривая алгоритм формирования линейного адреса по его виртуальному адресу (селектор:смещение) в защищенном режиме работы видим, что обращение к байту в памяти дополнительно требует (в наихудшем случае, при использовании LDT) обращений к двум 8 байтовым дескрипторам в памяти (в GDT и LDT) и выполнении двух 32 битных сложений. Сначала при получении адреса LDT данной задачи в GDT, путем сложения 32 битного адреса начала GDT (базы GDT, полученной из GDTR) и 32 битного значения базы из дескриптора LDT, определенного по селектору, взятому из регистра LDTR. Затем, при получении окончательного линейного адреса искомого байта, путем сложения 32 битного адреса начала соответствующего сегмента (базы сегмента) и 32 битного эффективного адреса. При этом заметим, что операции сдвига при умножении на 8 и выделения баз из дескрипторов не расходуют заметного времени, благодаря специальной «маршрутизации проводников» на кристалле МП, т.е. осуществлении этих операций аппаратным способом, при помощи комбинационных схем. (Вспомним, что в реальном режиме, эмулирующем МП 8086, при формировании физического адреса, достаточно было только одного 20 битового сложения (базы сегмента с эффективным адресом) без какого либо дополнительного обращения к памяти).

Для ускорения формирования линейного адреса при защищенном режиме работы, пользуются тем обстоятельством, что обращение к памяти производится гораздо чаще, чем изменение содержимого сегментных регистров и переключения задач. Поэтому целесообразно ускорить обращение к памяти за счет замедления загрузки сегментных регистров и переключения задач. Такой компромисс достигается путем ассоциирования с регистрами LDTR, TR и каждым сегментным регистром (CS, DS, SS, ES, FS, GS) так называемых теневых (Shadow) регистров, которые невидимы для пользовательских программ и даже программ операционной системы. Они автоматически модифицируются и невидимо используются схемами процессора

. На рисунке III.13 приведены все регистры преобразования адреса и их теневые регистры. Иногда теневые регистры называют кэш-регистрами, а сам этот прием – кэшированием (caching) дескрипторов, поскольку теневые регистры организованы как регистровая кэш-память.

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

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

Заметим следующее. Случай, когда селектор имеет нулевое поле индекса и TI = 0, в принципе допустим, но первый элемент таблицы GDT зарезервирован процессором и должен содержать нули. Такой селектор называется «пустым селектором» (null selector) или нуль-селектором, а соответствующий дескриптор – пустым дескриптором.

Рис.III.13. Теневые регистры дескрипторов.

 

Следовательно, пустые селекторы 0000h…0003h не описывают никаких полезных сегментов. Пустой селектор разрешается загружать в сегментный регистр (кроме CS и SS), но любая попытка использовать его в формировании адреса вызывает прерывание (особый случай). Одно из возможных применений пустых селекторов заключается в следующем. Перед инициированием задачи ОС может загрузить в регистры DS и ES пустые селекторы. Если в последующем не инициализировать эти регистры правильными селекторами, то адресация памяти через них вызовет особый случай.

Регистр LDTR хранит селектор сегмента, содержащего текущую LDT. Этот селектор должен индексировать дескриптор текущей LDT в таблице GDT. Во время переключения задач процессор изменяет все локальное адресное пространство простой перезагрузкой регистра LDTR. Вот почему переключение задач реализуется очень быстро. Использование в регистре LDTR селектора, а не физического адреса (как в регистре GDTR) позволяет обменивать локальные дескрипторные таблицы с внешней памятью теми же самыми механизмами виртуальной памяти, которые применяются для всех сегментов.

Подробная схема формирования физического (линейного) адреса команды из программы, дескриптор которой располагается в LDT, изображена на рисунке III.14.

Сегмент глобальной дескрипторной таблицы
Сегмент локальной дескрипторной таблицы  

 

Рис. III.14. Схема формирования линейного адреса команды в

программе, дескриптор которой располагается в LDT.

 

 

Важно отметить следующее: так как адреса памяти являются виртуальными, значение селектора не соответствует физическому адресу. С точки зрения пользовательских программ значение селектора сегмента лучше всего считать номером сегмента в дескрипторной таблице. Таким образом, физическое расположение сегмента не имеет фиксированного соответствия со значением селектора, которое программа загружает в сегментный регистр. Именно в этом и состоит предназначение MMU (Memory Management Unit) – устройства управления памятью. Эта независимость позволяет ОС размещать нужные сегменты в любой области физической памяти.

 







Дата добавления: 2015-08-12; просмотров: 2283. Нарушение авторских прав; Мы поможем в написании вашей работы!



Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

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

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Методы прогнозирования национальной экономики, их особенности, классификация В настоящее время по оценке специалистов насчитывается свыше 150 различных методов прогнозирования, но на практике, в качестве основных используется около 20 методов...

Методы анализа финансово-хозяйственной деятельности предприятия   Содержанием анализа финансово-хозяйственной деятельности предприятия является глубокое и всестороннее изучение экономической информации о функционировании анализируемого субъекта хозяйствования с целью принятия оптимальных управленческих...

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...

Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2   Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК. Решение. Подставим данные задачи в уравнение закона разбавления К = a2См/(1 –a) =...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия