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

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

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 155 156 157 158 159 160 < 161 > 162 163 164 165 166 167 .. 528 >> Следующая

дескрипторам кодовых сегментов. В тех случаях, когда аппаратура
распознает, что селектор назначения ссылается на дескриптор вентиля,
выполнение команды расширяется для определения содержимого вентиля
вызова.
Поля "Селектор" и "Сдвиг" вентиля обеспечивают формирование точки входа в
процедуру. В целом же вентиль гарантирует, что все обращения к другому
сегменту пройдут через правильную точку входа, даже, возможно, в середину
процедуры (или даже в середину команды). Поле операнда команды передачи
управления для "дальней" передачи задает не сегмент и не смещение целевой
команды, а задает вентиль. На рис. 3.29 показан этот способ адресации.
На рис. 3.30. показано, что для проверки правильности передач управления
через вентиль вызова используются 4 уровня привилегий:
1) CPL (текущий уровень привилегий);
2) RPL (запрашиваемый уровень привилегий) селектора, используемого для
указания вентиля вызова;
3) DPL дескриптора вентиля;
4) DPL дескриптора кодового сегмента назначения.
Поле DPL дескриптора вентиля определяет, какие уровни привилегий может
использовать вентиль. Кодовый сегмент может содержать несколько процедур,
которые предполагается использовать на разных уровнях привилегий,
например, ОС может содержать некоторые утилиты, которые могут
использоваться прикладными программами, в то время как другие утилиты
могут использоваться только системными программами.
16-разрядный видимый
селектор Скрытый дескриптор
CS CPL
Селектор вентиля вызова
Индекс
RPL
Проверка
привилегий
Дескриптор
вентиля
Смещение DPL Счетчик
Селектор Смещение
Дескриптор
кодового
сегмента
назначения
База сегмента Граница сегмента DPL База сегменте
База сегмента Граница сегмента
Рис. 3.30. Проверка привилегий при использовании вентиля вызова
279
ИСПОЛЬЗОВАНИЕ КЭШ-ПАМЯТИ И ОРГАНИЗАЦИЯ ОСНОВНОЙ ПАМЯТИ
Вентили позволяют передавать управление численно меньшим уровням
привилегий или тому же самому уровню привилегий (хотя они и не нужны для
передач тому же уровню привилегий). Использовать вентили вызова для
передач управлёния (численно) меньшим уровням привилегий могут только
команды CALL. JMP-команды предназначены для передач управления
исполняемому сегменту с тем же самым уровнем привилегий для
согласованного сегмента.
Для команд JMP в случае несогласованного сегмента должны быть выполнены
два следующих правила привилегий (в противном случае механизм защиты
вырабатывает исключение общей защиты):
1) MAX (CPL, RPL) < DPL вентиля;
2) DPL сегмента назначения = CPL.
Для команды CALL (или для команды ЦМРдля согласованного сегмента) должны
быть выполнены следующие правила привилегий;
1) MAX (CPL, RPL) < DPL вентиля;
2) DPL сегмента назначения < CPL.
Некоторые команды, зарезервированные для операционной системы. Команды,
которые могут воздействовать на механизм защиты или влиять на выполнение
системных программ, используются только в программах с особой степенью
доверия. МП реализует два типа таких команд:
1) привилегированные команды, которые нужны для систем управления
вычислительным процессом;
2) чувствительные команды (Sensitive Instructions), которые используются
для ввода/вывода и для действий, связанных с вводом/выводом.
Привилегированные команды. Команды, воздействующие на системные структуры
данных, могут выполняться только при CPL, равном нулю. Если процессор
обращается к одной из этих команд, когда CPL больше нуля, вырабатываются
сигналы общей защиты. Примерами таких команд являются следующие:
HLT - остановить процессор;
LGDT-загрузить регистр GDT (GDTR);
LLDT - загрузить регистр LDT (LDTR);
LMSW - загрузить Слово Состояние Машины (Machine Status Word);
LTR - загрузить регистр задачи (TR);
MOVE to/from CRn - перенести в управляющий/из управляющего регистра п
(CRn);
MOVE to/from DRn - перенести в отладочный/из отладочного регистра п
(DRn);
MOVE to/from TRn - перенести в регистр/из регистра задачи n (TRn).
Чувствительные команды. Команды, имеющие дело с вводом/выводом, нуждаются
в особом статусе, но необходимо, чтобы они могли выполняться и в
процедурах с уровнями привилегий большими нуля. Механизмы ограничений
команд ввода/вывода подробно раскрыты в главе организация ввода/вывода
современных МП ВС.
Команды проверки указателей. Команды проверки указателей - это важная
составляющая локализации программных ошибок. Проверка указателей
необходима для обеспечения независимости между уровнями привилегий.
Проверка указателей содержит следующие шаги (этапы):
1) проверка того, имеет ли назначение, специфицированное указателем право
доступа к
сегменту;
2) проверка того, соответствует ли тип сегмента заданному использованию;
3) проверка указателя на соответствие границе сегмента.
280
ЗАЩИТА ПАМЯТИ
Проверки 2 и 3 процессор делает автоматически во время выполнения
команды, а вот 1-ю проверку должно осуществлять системное ПО. Для этой
цели предназначена непривилегированная команда ARPL. ПО может провести
предварительно проверки 2 и 3 на потенциальные ошибки (не дожидаясь
Предыдущая << 1 .. 155 156 157 158 159 160 < 161 > 162 163 164 165 166 167 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

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

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed