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

4.3.3. Межсегментные передачи управления без изменения или с увеличением уровня привилегий.

Необходимость и проблемы межсегментных переходов без изменения или с увеличением уровня привилегий.

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

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

Но передача управления на программы операционной системы необходима.

Для реализации фактического увеличения уровня привилегий при межсегментных переходах в МП корпорации Intel предусмотрены:

  1. Особые системные объекты - шлюзы (gates).
  2. Ограничения используемых средств переходов.
  3. Изменения в интерпретации адресного поля команд переходов.
  4. Особая стратегия проверок уровней привилегий.
  5. Изменения в процедуре переходов.

Шлюзы.

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

Шлюзы имеют свои уровни привилегий. Уровень привилегий шлюза может отличаться от уровня привилегий как вызываемой программы, так и вызывающей. При вызове шлюза проверяется его доступность по соотношению уровней привилегий вызывающей программы и уровня привилегии шлюза. Кроме этого, проверяется соотношение уровней привилегии вызывающей и вызываемой программы.

Используемые средства переходов.

Межсегментный переход с увеличением уровня привилегий может быть задан:

  • командой межсегментного вызова CALL типа FAR;
  • командой вызова процедуры прерывания INT n;
  • прерыванием;
  • ловушкой.

В соответствии с этим используются шлюзы:

  • вызова (call gates);
  • прерывания (interrupt gates);
  • ловушки (trap gates).
Кроме этого, для переключения задач с изменением уровня привилегий используется шлюз задач (task gates). Межсегментные переходы с использованием переключения задач рассматриваются ниже в п. 4.3.5.

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

  • шлюзы вызова - в GDT и LDT;
  • шлюзы прерываний и ловушек - в IDT;
  • шлюзы задач - в GDT и IDT.

Стратегия проверок уровней привилегий при межсегментных переходах с увеличением уровней привилегий.

При реализации межсегментных переходов с увеличением уровня привилегий производятся две проверки:

  • доступность шлюза;
  • доступность кодового сегмента.

На рис. 10 представлена схема допустимых вызовов процедур с использованием шлюзов.


Рис. 10. Схема допустимых межсегментных переходов переходов с использованием шлюзов.

Доступность шлюза.

Доступность шлюза аналогична доступности данных. Шлюз доступен, если его уровень привилегий (DPLШЛ) не выше текущего уровня привилегий (CPLПР) и уровня привилегий запроса (RPLСК).

Для команды вызова проверка заключается в определении выполнения условия:

(CPLПР <= DPLШЛ) & (RPLСК <= DPLШЛ)

При использовании команды INT n, прерывания или ловушки отсутствует уровень запроса и проверка сводится к определению выполнения условия:

CPLПР <= DPLШЛ.

Доступность кодового сегмента.

Межсегментная передача управления допустима только на программы своего или более высоких уровней привилегий. В соответствии с этим доступность кодового сегмента определяется выполнением условия:

DPLЦКС <= CPLПР

Таким образом, условиями допустимости передач управления с использованием шлюзов по уровням привилегий являются:

  • При использовании команды CALL типа FAR:

    1. (CPL <= DPLШЛ) & (RPLСК <= DPLШЛ)
    2. DPLЦКС <= CPL

  • При использовании команды INT n, прерывания или ловушки:

    1. CPL <= DPLШЛ
    2. DPLЦКС <= CPL

Процедура межсегментных переходов с увеличением уровня привилегий.

Со схемой взаимодействия программ без изменения или с увеличением уровня привилегий по команде CALL типа FAR можно ознакомится или по схеме (рис. 11) или по экранной модели (мод. 4).

В защищенном режиме для каждого уровня привилегий имеется свой стек.

Смена стека сопровождается стандартными проверками на действительность селектора сегмента стека и доступность сегмента стека по уровням привилегий перед его загрузкой в сегментный регистр стека SS. Дополнительно проверяется достаточность выделенного объема стека для размещения следующих элементов:

  • старого указателя стека (8 байт);
  • копируемых параметров (0-128 байт);
  • адреса возврата (8 байт);
  • локальных переменных, которые может включать в стек вызванная процедура.

Передачи управления по прерываниям и ловушкам.

Передачи управления по прерываниям и ловушкам являются так же передачами без изменения или с увеличением уровня привилегий. Это тоже передачи управления с обязательным использованием шлюзов прерывания или ловушки (прерывания с использованием шлюза задачи рассматриваются в п 4.3.5).

Отличиями этих переходов от вызовов процедур командой CALL типа FAR являются следующие:

  • команды вызова прерывания, например, INT n, прерывания и ловушки используют не селектор шлюза, а тип прерывания n;
  • обращение за дескрипторами шлюзов производится не в таблицы GDT или LDT, а в таблицу дескрипторов прерываний IDT.

Использование типа прерывания, вместо селектора дескриптора шлюза, изменяет условие доступа. Команды прерывания, прерывания и ловушки для определения целевого кодового сегмента используют не селектор, а тип прерывания. Для прерываний и ловушек дескриптор шлюза доступен, если его уровень привилегий не превышает текущего, т. е.:

CPL <= DPLШЛ

Условие доступа целевого кодового сегмента остается прежним. Целевой кодовый сегмент доступен программам, если его уровень не меньше текущего:

DPLЦКС <= CPL

Со схемой взаимодействия программ с увеличением уровня привилегий по команде INT n, прерываниям или ловушкам можно ознакомится по экранной модели (мод. 5).

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

  1. В чем заключается необходимость передач управления с повышением уровня привилегий.
  2. Что предусмотрено в МП корпорации Intel для реализации переходов с увеличением уровня привилегий.
  3. Какой обработчик может использоваться при переходах с увеличением уровня привилегий.
  4. Можно ли использовать шлюзы при переходах без изменения уровня привилегий.
  5. Можно ли использовать команду FAR CALL для передач управления с увеличением уровня привилегий.
  6. Какие средства можно использовать для передач управления с увеличением уровня привилегий.
  7. Как задается смещение и целевой сегмент при передачах управления с увеличением уровня привилегий.
  8. Какие типы шлюзов вы знаете.
  9. Где могут располагаться шлюзы.
  10. В чем заключается условие доступности шлюза вызова.
  11. В чем заключается условие доступности шлюзов прерывания, ловушки.
  12. В чем заключается условие доступности целевого сегмента.
  13. При каких переходах производится смена стека.
  14. По каким причинам производится смена стека.
<< Предыдущая страница Следущая страница >>