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

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

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

к сегментам данных. Во 2-м случае доступ корректен, так как уровень
привилегий согласованных сегментов является, по существу, тем же самым,
что и CPL независимо от DPL. В 3-м случае обращение правильное, так как
DPL кодового сегмента в CS является при переопределении равным CPL.
Ограничения передач управления. Передачи управления осуществляются МП по
командам JMP, CALL, INT и RET, а также при прерываниях и исключениях. В
этой главе обсуждаются передачи управления по командам JMP, CALL, и RET.
Так называемые "близкие" передачи управления по командам JMP, CALL, и RET
предполагают передачи управления в пределах исполняемого (текущего)
кодового сегмента, и поэтому проверяются только на границу сегмента.
Процессор реализует только те передачи управления, которые не превышают
границу исполняемого сегмента. Предел сегмента находится в скрытом CS-
регистре, а потому проверка защиты для "близких" передач управления не
требует дополнительных тактовых циклов.
Операнды так называемых "дальних" передач управления, осуществляемых по
командам JMP и CALL, находятся в других сегментах. Возможны два варианта
передач управления другому сегменту по командам JMP и CALL:
1) операнд команды - это дескриптор другого кодового сегмента;
2) операнд команды - это дескриптор вентиля вызова.
276
ЗАЩИТА ПАМЯТИ
Векторизация передач управления через вентили вызова будет
рассматриваться позднее.
Рис. 3.27 показывает, что при проверке привилегий для передач управления,
которые не используют вентиль вызова, контролируются два различных уровня
привилегий:
1) CPL (текущий уровень привилегий);
2) DPL дескриптора вызываемого сегмента.
Обычно CPL равен DPL сегмента, который в данный момент выполняет
процессор, CPL может, однако, быть больше (по величине), чем DPL, если в
дескрипторе выполняемого сегмента установлен бит согласования (С = 1).
Процессор разрешает обращения непосредственно к другому сегменту, если
удовлетворяется одно из двух правил привилегий:
1) DPL целевого сегмента равен CPL;
2) разряд согласования дескриптора целевого кодового сегмента установлен
(С = 1), a DPL целевого сегмента меньше или равен CPL.
Кодовый сегмент, разряд согласования дескриптора которого установлен,
называется согласованным сегментом.
Механизм согласования позволяет обращаться к процедурам из сегментов с
разным уровнем привилегий и при этом выполнять их на уровне привилегий
вызывающего сегмента. Примерами таких процедур являются различные
библиотеки процедур и некоторые процедуры обработки исключений. Когда
управление передается согласованному сегменту, CPL не изменяется, но это
происходит лишь в случае неравенства CPL и DPL текущего кодового
сегмента. Большинство кодовых сегментов не согласованы.
Основные правила привилегий, описанные выше, означают, что для
несогласованных сегментов управление может быть передано без
использования вентиля вызова лишь кодовым сегментам на том же уровне
привилегий. Нужно, однако, передавать управление и сегментам с (численно)
меньшим уровнем привилегий, это обеспечивается передачей управления по
команде CALL через дескрипторы вентилей вызова. Команды JMP никогда не
передают управление несогласованному сегменту, DPL которых не равен CPL.
16-разрядный Скрытый дескриптор
видимый селектор
CS CPL
Дескриптор целевого сегмента
Проверка
привилегий
31
23
15
База 31-24 G D 0 AVL Предел 19-16 Р DPL 11 CRA
База 23-16
База сегмента 15-0 Предел сегмента 15-0

Рис. 3.27. Проверка привилегий для непосредственных передач управления
другому сегменту (CPL - текущий уровень привилегий; DPL - уровень
привилегий дескриптора; С - бит согласования)
277
ИСПОЛЬЗОВАНИЕ КЭШ-ПАМЯТИ И ОРГАНИЗАЦИЯ ОСНОВНОЙ ПАМЯТИ
31
23
15
Сдвиг точки входа кодового сегмента 31-16 Р DPL Тип 10100 ООО
Счетчик DWORD
Селектор Сдвиг точки входа кодового сегмента 15-0
Рис. 3.28. Формат вентиля вызова
Дескрипторы вентилей "охраняют" точки входа в процедуру. Для обеспечения
защиты передач управления между исполняемыми сегментами с разными
уровнями привилегий МП фирмы "Intel" используют дескрипторы вентилей
(шлюзов). Существует четыре вида вентилей:
1) вызова;
2) ловушек;
3) прерываний;
4) задач.
В этой главе рассматриваются вентили вызова. Вентили задач используются
для переключения задач. Вентили ловушек и вентили прерываний используются
в механизмах прерываний и исключений. Рис. 3.28. иллюстрирует формат
вентиля вызова.
Вентиль вызова может быть размещен в GDT или в LTD.
Вентиль вызова имеет две главные функции:
1) задать точку входа процедуры;
2) специфицировать уровень привилегий точки входа.
Код операции Смещение Селектор
CALL (не используется) Индекс RPL
Таблица дескрипторов
Дескриптор вентиля Смещение DPL Счетчик
Селектор Смещение



Дескриптор кодового сегмента назначения База DPL База
База
278
Рис. 3.29. Косвенная передача управления через вентиль вызова
ЗАЩИТА ПАМЯТИ
Дескрипторы вентиля вызова используются командами CALL и JMP подобно
Предыдущая << 1 .. 154 155 156 157 158 159 < 160 > 161 162 163 164 165 166 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

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

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed