December 17 2017 17:28:10
Навигация
Авторизация
Логин

Пароль



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

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

Бит разрешения считывания R вводится для сегмента программ и разрешает при R=1 производить считывание его содержимого. При R = 0 допускается только выборка содержимого этого сегмента для выполнения через регистр CS. Попытка считывания сегмента в этом случае вызовет исключение типа #GP. Отметим, что прерывание этого типа возникает также при попытке записи в сегмент программ независимо от значения бита R. Таким образом, запись в сегмент программ запрещена. Если возникает необходимость внести изменение в этот сегмент, то можно создать сегмент данных с разрешением записи (W = 1), занимающий то же адресное пространство, что и модифицируемый сегмент программ. После внесения изменений в созданный сегмент данных можно обратиться к нему как к сегменту программ, загрузив селектор этого сегмента в регистр CS.




7 6 5 4 3 2 1 0
а) Р DPL S= 1 1 C R A


7 6 5 4 3 2 1 0
б) Р DPL S= 1 0
W A


7 6 5 4 3 2 1 0
в) Р DPL S= 0 TYPE

Рис. 2.43. Формат байта доступа для дескрипторов сегментов программ (а), данных (б) и системных дескрипторов (в)

Бит подчиненности С определяет дополнительные правила обращения, которые обеспечивают защиту сегментов программ: при С = 0 обращение к данному сегменту разрешается только программам, имеющим уровень привилегии CPL (значение поля RPL в регистре CS) такой же, как значение поля DPL в дескрипторе сегмента; при С = 1 допускается обращение к данному сегменту программ, имеющих CPL >= DPL.

Бит разрешения записи W вводится для сегментов данных. Разрешает (при W = 1) или запрещает (при W = 0) изменение содержимого этих сегментов. При W = 0 разрешается только считывание данных, а при попытке записи реализуется исключение типа #GP.

Бит направления расширения Е определяет размещение сегмента данных относительно заданной границы сегмента. При Е = 0 (расширение вверх) данные в сегменте размещаются от базового адреса ВА, задающего нижний предел сегмента до верхнего предела, определяемого суммой базового адреса и границы сегмента: (BA+L). Таким образом, сегмент размещается вниз от границы - в направлении уменьшения адресов до базового.

При Е = 1 (расширение вниз) данные располагаются, начиная с адреса (BA+L+1), определяющего нижний предел сегмента. Остальные ячейки размещаются в направлении возрастания адресов (вниз от границы) до верхнего предела, задаваемого адресом (ВА+М). Верхний предел сегмента в этом случае равен базовому адресу, увеличенному на М = FFFFh (размер сегмента до 64 Кбайт) или на М = FFFFFFFFh (размер сегмента до 4 Гбайт) в зависимости от значения бита разрядности D/B в байте 6 дескриптора (см. рис. 2.42). Размер сегмента будет равен (M-L), и его максимальное значение достигается, когда заданная граница L = 0. Отметим, что для сегментов с расширением вниз значения битов дробности и разрядности должны быть равными: G = D/B.

Таким образом, при расширении вверх (бит Е = 0) относительный адрес выбираемой ячейки должен быть меньше или равен границе сегмента, при расширении вниз (бит Е = 1) относительный адрес должен быть больше границы сегмента.

Формат байта доступа для системных дескрипторов (S = 0) приведен на рис. 2.43, в. Поле TYPE определяет тип системного дескриптора в соответствии с табл. 2.58. Можно выделить три основных класса системных дескрипторов.

Таблица 2.58 Типы системных дескрипторов

TYPE Тип системного дескриптора
0000 Резервировано
0001 TSS, 16-разр. (доступен)
0010 LTD
0011 TSS, 16-разр. (занят)
0100 Шлюз вызова подпрограммы, 16-разр.
0101 Шлюз вызова задачи
0110 Шлюз вызова прерываний, 16-разр.
0111 Шлюз вызова ловушки, 16-разр.
1000 Резервировано
1001 TSS, 32-разр. (доступен)
1010 Резервировано
1011 TSS, 32-разр. (занят)
1100 Шлюз вызова подпрограммы, 32-разр.
1101 Резервировано
1110 Шлюз вызова прерываний, 32-разр.
1111 Шлюз вызова ловушки, 32-разр.
Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

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

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

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