December 12 2017 08:26:53
Навигация
Авторизация
Логин

Пароль



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

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

Бит разрядности по умолчанию D/B для сегментов команд определяет разрядность формируемого относительного адреса и выбираемого операнда: 16 разрядов при D/B = 0, 32 разряда при D/B = 1. Если производится обращение к сегменту стека (при выполнении команд типа PUSH, POP, CALL), то при D/B = 0 используется регистр SP и 16-разрядные, а при D/B = 1 - регистр ESP и 32-разрядные данные. Для расширяемых вниз сегментов дан­ных (сегменты со стековой адресацией) бит D/B определяет их верхнюю границу: М = FFFFh при D/B = 0 или М = FFFFFFFFh при D/B = 1. Для системных дескрипторов этот бит должен иметь нулевое значение.

Байт 8 Байт 7 Байт 6 Байт 5
31                   24 23 22 21 20 19       16 15 14  13 12 11    8 7                         0
Базовый адрес ВА31-24 G D/B 0 AVL Граница L19-16 Р DPL S TYPE Базовый адрес ВА23-16
Базовый адрес ВА15-0 Граница сегмента L15-0
31                                                                         16 15                                                             0
Байты 2,3 Байты 0,1

Рис. 2.42. Общий формат дескриптора

Бит 5 в байте 6 всегда должен иметь нулевое значение, а бит 4 (AVL) может принимать значение, устанавливаемое пользователем или операционной системой.

Байт 5 дескриптора определяет права доступа к выбираемому сегменту. В зависимости от вида сегмента байт доступа имеет различные форматы (рис. 2.43), хотя назначение ряда полей (битов) остается одинаковым. Одинаковое назначение имеют следующие биты и поля.

Бит присутствия Р определяет наличие соответствующего сегмента в памяти. Если Р = 0 (сегмент отсутствует), то данный дескриптор не используется для формирования адресов, т. е. соответствующие байты дескриптора не загружаются в регистры, хранящие базовый адрес и размер сегмента. Поэтому содержимое этих байтов может быть установлено произвольно. Если в регистр сегмента поступает селектор дескриптора, имеющего Р = 0, то процессор переходит к обработке соответствующего исключения #NP («отсутствие сегмента»).

Поле DPL (биты 6-5) указывает уровень защиты сегмента (уровень привилегий дескриптора). В зависимости от соотношения значений DPL и RPL, задаваемого в младших битах селектора (см. рис. 2.39), разрешается или запрещается обращение к данному сегменту. Таким образом, обеспечивается требуемый уровень защиты сегмента.

Системный бит S определяет вид выбираемого сегмента. При S = 1 дескриптор обеспечивает обращение к сегментам программ (кодов) или данных (включая стек). Системные дескрипторы, имеющие значение S = 0, служат для обращения к таблицам LDT, сегментам состояния задачи TSS или шлюзам для входа в другие задачи или программы, включая программы обслуживания исключений и прерываний.

Форматы байта доступа для дескрипторов сегментов программ и данных (рис. 2.43, а, б) отличаются значениями бита 3, который имеет значение «1» для сегментов программ и «0» для сегментов данных.

Бит обращения А устанавливается в единицу при обращении к сегменту, т. е. при загрузке соответствующего селектора в сегментный регистр. Этот бит периодически проверяется операционной системой, реализующей виртуальную память, которая таким образом выявляет невостребованные сегменты, имеющие А = 0. Сегменты, долгое время остающиеся невостребованными, выводятся из оперативной памяти на магнитный диск, освобождая место для других сегментов.

Назначение битов 1 и 2 байта доступа зависит от типа сегмента.

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

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

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

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