Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 94

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 88 89 90 91 92 93 < 94 > 95 96 97 98 99 100 .. 528 >> Следующая

разрядность формируемого относительного адреса и выбираемого операнда: 16
разрядов при D/В = 0, 32 разряда при D/В = 1. Если производится обращение
к сегменту стека (при выполнении команд типа PUSH, POP, CALL), то при D/В
= 0 используется регистр SP и 16-разрядные, а при D/В = 1 - регистр ESP и
32-разрядные данные. Для расширяемых вниз сегментов данных (сегменты со
стековой адресацией) бит D/В определяет их верхнюю границу: М = FFFFh при
D/В = 0 или М = FFFFFFFFh при D/В = 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 AVI- Граница L19-16 Р D PI-
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. Сегменты, долгое время остающиеся невостребованными, выводятся из
оперативной памяти на магнитный диск, освобождая место для других
сегментов.
Назначение битов 1 и 2 байта доступа зависит от типа сегмента.
Бит разрешения считывания R вводится для сегмента программ и разрешает
при R=1 производить считывание его содержимого. При R = 0 допускается
только выборка содержимого этого сегмента для выполнения через регистр
CS. Попытка считывания сегмента в этом случае вызовет исключение типа
#GP. Отметим, что прерывание этого типа возникает также при попытке
записи в сегмент программ независимо от значения бита R. Таким образом,
запись в сегмент программ запрещена. Если возникает необходимость внести
изменение в этот сегмент, то можно создать сегмент данных с разрешением
записи (W = 1), занимающий то же адресное пространство, что и
модифицируемый сегмент программ. После внесения изменений в созданный
сегмент данных можно обратиться к нему как к сегменту программ, загрузив
селектор этого сегмента в регистр CS.
7 6 5 4 3 2 1 0
I Р I DPL I S=1 | 1 | С | R | I A I
7 6 5 4 3 2 1 0
I Р I DPL | S = 1 | 0 I E | W | I A I
7 6 5 4 3 0
I Р I DPL I S = 0 | TYPE I
Рис. 2.43. Формат байта доступа для дескрипторов сегментов программ (а),
данных (б) и системных дескрипторов (в)
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
Бит подчиненности С определяет дополнительные правила обращения, которые
обеспечивают защиту сегментов программ: при С = 0 обращение к данному
сегменту разрешается только программам, имеющим уровень привилегии CPL
(значение поля RPL в регистре CS) такой же, как значение поля DPL в
дескрипторе сегмента; при С = 1 допускается обращение к данному сегменту
программ, имеющих CPL >= DPL.
Бит разрешения записи W вводится для сегментов данных. Разрешает (при W =
1) или запрещает (при W = 0) изменение содержимого этих сегментов. При W
= 0 разрешается только считывание данных, а при попытке записи
Предыдущая << 1 .. 88 89 90 91 92 93 < 94 > 95 96 97 98 99 100 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed