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

При загрузке селектора в регистр CS процессор производит ряд проверок.

На рис. 9 представлены только основные проверки, отражающие стратегию контроля механизма защиты.


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

Прежде всего, проверяется, определяет ли целевой дескриптор кодовый сегмент, т.е. имеет ли атрибут исполняемого сегмента (S=0, E=1). Разрешение на считывание из этого сегмента не требуется.

Далее проверяется подчиненность целевого кодового сегмента (C=1).

В случае использования неподчиненного целевого кодового сегмента процессор контролирует, что значение DPL дескриптора точно равно значению CPL, а значение поля RPL в селекторе команды меньше или равно значению CPL (рис. 9).

Наконец, целевой кодовый сегмент должен быть отмечен как присутствующий (бит Р = 1 в дескрипторе, рис. 9), а новое значение для EIP должно находиться в пределах нового сегмента кода (смещение <= предела L, рис. 9).

Только при условии выполнения всех этих условий процессор продолжает выполнение передачи управления по указанному адресу. Когда какая-либо проверка дает отрицательный результат, формируется нарушение общей защиты (прерывание 13) или нарушение присутствия (прерывание 11).

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

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

<< Назад