Проверка корректности использования отдельных команд.

К привилегированным командам относятся те, на выполнение которых влияет уровень привилегий программы или привилегии устройств ввода/вывода. Микропроцессор имеет три группы привилегированных команд, степени привилегий которых различны. Это: PLO – команды; IOPL – чувствительные команды; команды, модифицируемые в соответствии с текущим уровнем привилегий.

PLO – команды – это команды, выполнение которых разрешено только на уровне привилегий 0. При попытке выполнить их на другом уровне привилегий генерирует сигнал нарушения общей защиты и вызывает прерывание программы, в которой эта команда встретилась (прерывание 13). В эту группу команд входят команды останова процессора и команды загрузки системных объектов, в которых источником или получателем данных выступают системные регистры управления CRn, отладки DRn и проверки TPn.

IOPL – чувствительные команды (Input – Output PL команды). Это команды , которые изменяют состояние флажка прерываний IF, выполняют захват шины или операцию ввода/вывода. В микропроцессоре есть специальный регистр флагов EFLAGS, в котором есть двухразрядное поле IOPL , определяющее уровень привилегий операций ввода/вывода. Для выполнения этих команд программа необязательно должна иметь уровень привилегий CPL равный нулю. Достаточно, чтобы уровень привилегий программы CPL был выше уровня, определяемого полем IOPL в регистре EFLAGES, т.е. необходимо выполнение условия CPL< IOPL. При попытке выполнения этих команд при CPL> IOPL генерируется нарушение общей защиты и происходит прерывание текущей программы (прерывание 13).

Команды, модифицируемые в соответствии с текущим уровнем привилегий. Это всего две команды:

POPFD – загрузка 4-хбайтного регистра флагов EFLAGS из стека;

POPF – загрузка 2-х байтного регистра флагов EFLAGS из стека.

Команды POPFD и POPF сами по себе не являются привилегированными и любая программа их может содержать. Эти команды могут изменять любые биты в регистрах флагов, кроме битов IOPL и флага IF. Двухразрядное поле IOPL в регистрах флагов может быть изменено (модифицировано), если эти команды встретятся в программах ОС нулевого уровня. Флаг IF модифицируется только при выполнении условия CPL< IOPL. При нарушении указанных условий прерывание не производится , т.к. процессор просто не модифицирует биты IOPL и флаг IF, если это не разрешено.

 








Дата добавления: 2015-08-14; просмотров: 762;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.