Оглавление Об учебном пособии
Использованные источники1 Использованные источники2 Использованные источники3 Использованные источники4 Использованные источники5 Использованные источники6

4.2.2. Работа механизма защиты данных при трансляции сегментов.

В работе механизма защиты обращений к данным можно выделить два этапа:

  • загрузка сегмента данных;
  • обращение к сегменту данных для чтения или записи операндов при выполнении команд программы.

Загрузка сегментов данных (включая стековые) производится командами "Загрузка указателя в регистр смещения". Это команда типа регистр - память:

(LDS, LES, LFS, LGS, LSS) reg, mem

Сегментный регистр определяется кодом операции. В адресной части команд полем "reg" задается один из регистров общего назначения, полем "mem" - адрес полного указателя операнда: смещение в сегменте и селектор сегмента.

Команда выбирает из ячеек памяти, начиная с адреса mem, величину смещения некоторого операнда и селектор. При положительных результатах проверок механизма защиты смещение загружается в РОН, заданный полем "reg", а селектор - в сегментный регистр, заданный полем mem. Загрузка селектора в сегментный регистр сопровождается чтением из таблицы дескрипторов (локальной или глобальной в зависимости от значения бита G/L) дескриптора сегмента, заданного полем index селектора и записи его в дескрипторный регистр, ассоциированный с заданным сегментным регистром. Непосредственно эта команда не предусматривает каких-либо действий по использованию выбранного смещения.

Со схемой выполнения команды загрузки сегментного регистра можно познакомится или по рисунку (рис. 7) или по экранной модели (мод. 1).

Обращение к сегменту данных для чтения или записи операндов при выполнении команд программы.

После успешной загрузки селектора, при выполнении команд, предусматривающих обращение к памяти за данными, процессор производит проверки:

При загрузке селектора в сегментный регистр стека процессор несколько ужесточает правило защиты: загрузка разрешается, если только значение DPL сегмента стека точно равно значению CPL и RPL. Это связано с использованием отдельных стеков для каждого уровня привилегий.

Кроме этого, загрузка селектора в регистр SS производится, если только выбираемый сегмент допускает операции считывания и записи, а также присутствует в памяти (бит Р присутствия в дескрипторе сегмента должен находиться в состоянии 1). Это связано с тем, что стек участвует в сохранении состояния процессора при передачах управления программам обработки прерывания, и недоступность стека по записи и/или чтению парализует работу системы прерывания.

Последующие проверки по обращению к стеку с операциями чтения или записи не производятся, так как необходимый контроль был произведен при загрузке селектора.

Механизм защиты допускает возможность размещения данных (констант) непосредственно в кодовом сегменте. Это может быть желательным при хранении кода и данных в ПЗУ. Обращение к этим данным (только по чтению) возможно при помощи использования префикса переопределения сегмента, определенному как "читаемый".


Вопросы для самопроверки:

  1. Определите этапы в работе механизма защиты при обращении к данным загрузка сегмента данных.
  2. Какие проверки производятся перед обращением к таблице дескрипторов.
  3. Как определяется действительность селектора целевого сегмента.
  4. Как определяется возможность выхода за пределы таблицы дескриптора.
  5. Какие проверки производятся после чтения дескриптора целевого сегмента.
  6. Что означает проверка по типу сегмента.
  7. В чем заключается условие разрешения доступа к данным по уровням привилегий.
<< Предыдущая страница Следущая страница >>