December 15 2017 04:14:56
Навигация
go to the site Original Inno Gialuron
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
адреса и границы сегмента
ФОРМАТЫ ПРЕДСТАВЛЕНИЯ ДАННЫХ И ВЫПОЛНЕНИЕ ОПЕРАЦИЙ

Таким образом, в защищенном режиме программно задается логический адрес ячеек памяти, хранящих команды или данные, который состоит из селектора и относительного адреса. С помощью селектора и таблиц GDT, LDT процессор производит выборку соответствующего дескриптора. Затем формируется линейный адрес ячейки памяти путем сложения базового адреса, содержащегося в дескрипторе, и относительного адреса, образуемого в соответствии с используемым способом адресации (рис. 2.41). Линейный адрес определяет местоположение ячейки в линейном адресном пространстве, которое может быть разбито на отдельные страницы при введении страничной организации памяти.

Если при работе процессора не используется страничная организация памяти (бит 32 в регистре управления CRO сброшен: PG = 0), то полученный линейный адрес является физическим адресом для выбора требуемой ячейки памяти.

img027

При выполнении программ, написанных для процессоров 80386,80486, Pentium, P6, базовый и относительный адреса содержат по 32 разряда. При работе в режиме виртуального 8086 в качестве базового адреса используется селектор, сдвинутый влево на 4 разряда. Таким образом, базовый адрес имеет 20 разрядов. В этом режиме используется 16-разрядный относительный адрес, а формируемый линейный адрес содержит 20 разрядов.

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

В таблицах GDT, LDT могут размещаться следующие виды дескрипторов:

•  дескрипторы сегментов команд;

•  дескрипторы сегментов данных;

•   системные дескрипторы.

В общем виде формат дескриптора представлен на рис. 2.42, где 32-разрядный базовый адрес сегмента (база ВА31-0) и 20-разрядная граница сегмента (L19-0) размещены по частям в различных байтах дескриптора.

Граница сегмента L указывает максимальное допустимое значение относительного адреса, которое может использоваться при обращении к сегменту. Величина (L+1) определяет размер сегмента в байтах или страницах. Обращение к ячейке памяти, находящейся за границей данного сегмента, вызывает исключение типа #GP.

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

Бит дробности G указывает, в каких единицах задан размер сегмента: в байтах при G = 0 или страницах объемом по 4 Кбайт при G = 1. Таким образом, сегмент может иметь размер до 220 = 1 Мбайт при G = 0 или до 232 = 4 Гбайта при G = 1.

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.02 секунд 2,297,527 уникальных посетителей