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

4.3.5. Межсегментные переключения задач.

Межсегментные переключения задач - это переходы с использованием механизма переключения задач.

Возможны две модели переключения задач:

  • прямое переключение задач;
  • переключение задач с использованием шлюзов (косвенное переключение задач).

Переключение программ может производиться командами JMP и CALL типа FAR, командами вызова прерываний, например, INT n, или командой IRET. Кроме этого, переключения задач могут инициироваться прерываниями и ловушками.

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

Прямое переключение задач.

Прямое переключение задач - это переключение задач без использования шлюза задач.
Прямое переключение задач производится командами JMP и CALL типа FAR .

В случае использования команд JMP и CALL типа FAR селекторы этих команд должны выбирать дескриптор TSS и должно выполняться условие доступа прямого переключения: уровень привилегий TSS программы цели должен быть не выше уровня привилегий текущей программы и запроса, т.е.:

(CPL <= DPLTSS) & (RPL <= DPLTSS)

где DPLTSS - уровень привилегий сегмента TSS (берется из поля уровня привилегий дескриптора TSS).

Со схемой основных проверок при прямом переключении задач по командам JMP и CALL типа FAR можно ознакомиться
или по схеме (рис. 12) или по экранной модели (мод. 7).

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

Переключение задач с использованием шлюза задач.

Любое переключение задач на программы более высокого уровня привилегий допускается только при помощи команд CALL типа Far, IRET, INT n, а также в результате прерываний и ловушек. При этом использование шлюза задачи (шлюза TSS) - обязательно.

Со схемой проверок по соответствию уровней привилегий и с процедурой выбора целевого TSS при переключении задач c использованием шлюза задачи по командам прерывания Int n и ловушкам, а также по командам возврата из прерываний IRET можно ознакомиться по схеме или по экранной модели (мод. 8).

Со схемой проверок по соответствию уровней привилегий и с процедурой выбора целевого TSS при переключении задач c использованием шлюза задачи можно ознакомиться по схеме (рис. 13) или по экранной модели (мод. 9).

Условия доступа здесь аналогичны условиям доступа при прямых переключениях задач, но вместо сегментов задачи (TSS) используются шлюзы задачи (ШлTSS).

(CPL <= DPLШЛTSS) & (RPL <= DPLШЛTSS)

Проверки соответствия уровней CPL, RPL и DPLTSS не требуется.

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

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

При использовании команд IRET, команды вызова прерываний, например, INT n или в случаях прерываний и ловушек, как прямое переключение задач, так и переключение задач с использованием шлюзов задач производится вне зависимости от значений, соответственно, DPLTSS или DPLШлTSS, т.е. без проверок условий доступа по уровням привилегий.

Но здесь вполне контролируемая ситуация.

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


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

  1. Основные этапы процедуры переключения задач.
  2. Допустимые средства переключения задач.
  3. В чем причина "ослабления" ограничений при использовании переходов с изменением уровней привилегий.
  4. Как выбирается механизм возврата.
  5. Как используется бит вложенности NT.
  6. В чем заключается особенность использования команды JMP для переключения задач.
  7. В чем суть прямого переключения задач.
  8. Какие средства допустимы для прямого переключения задач.
  9. Условия допустимости прямых межуровневых переключений задач.
  10. Условия допустимости переключения задач с увеличением уровня привилегий (средства, тип обработчика), соотношения уровней привилегий.
  11. Условия допустимости переключения задач с увеличением уровня привилегий при использовании команды CALL типа FAR.
  12. Условия допустимости переключения задач с увеличением уровня привилегий при использовании команды INT n, прерывания или ловушки.
<< Предыдущая страница Следущая страница >>