Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DiVM / OSISP / Лекции_ОССП_Р2.pdf
Скачиваний:
95
Добавлен:
11.05.2015
Размер:
1.33 Mб
Скачать

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

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

-выполнять некоторые команды;

-обращаться к данным других программ;

-передавать управление внешнему коду по отношению к самой программе

спомощью команд дальней передачи управления: far call или far jmp.

9.1.3.1Привилегированные команды

К ним относятся те, которые модифицируют состояние флажка if , изменяют сегментацию, или изменяют сам механизм защиты, а также команды ввода/вывода.

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

hlt

;остановка процессора;

clts

;сброс флага переключенной задачи;

lgdt, lidt, lldt ;загрузка регистров дескрипторной таблицы;

ltr

;загрузка регистра задач;

lmsw

;загрузка слова состояния машины;

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

Вторую группу образовывают команды, связанные с изменением флажка прерываний и команды, производящие ввод/вывод.

Эти команды могут быть выполнены программой, у которых уровень привилегий меньше либо равен уровню IOPL (это поле, находящееся в регистре флажков). Их еще называют IOPL-чувствительными командами. Изменить значение этого бита флажка прерывания и поля IOPL, который находится в регистре флажков. Казалось бы, можно обходным путем с помощью команды занесения регистра флажков в стек и извлечения из стека, которые не относятся к привилегированным. Но процессор всё равно контролирует уровень привилегий программы, которые выполняет эти команды и, если обнаруживается, что попытку изменить указанные биты предпринимает программа, которая не имеет на это право (не относящихся к нулевому уровню), но процессор запрещает модификацию этих битов. Для того, чтобы программа могла выполнять IOPL чувствительные команды надо, чтобы CPL<=IOPL.

9.1.3.2 Защита доступа к данным

126

Соседние файлы в папке OSISP