К привилегированным командам относятся те, на выполнение которых влияет уровень привилегий программы или привилегии устройств ввода/вывода. Микропроцессор имеет три группы привилегированных команд, степени привилегий которых различны. Это: PLO — команды; IOPL — чувствительные команды; команды, модифицируемые в соответствии с текущим уровнем привилегий.
PLO — команды — это команды, выполнение которых разрешено только на уровне привилегий 0. При попытке выполнить их на другом уровне привилегий генерирует сигнал нарушения общей защиты и вызывает прерывание программы, в которой эта команда встретилась (прерывание 13). В эту группу команд входят команды останова процессора и команды загрузки системных объектов, в которых источником или получателем данных выступают системные регистры управления CRn, отладки DRn и проверки TPn.
IOPL — чувствительные команды (Input — Output PL команды). Это команды, которые изменяют состояние флажка прерываний IF, выполняют захват шины или операцию ввода/вывода. В микропроцессоре есть специальный регистр флагов EFLAGS, в котором есть двухразрядное поле IOPL, определяющее уровень привилегий операций ввода/вывода. Для выполнения этих команд программа необязательно должна иметь уровень привилегий CPL равный нулю. Достаточно, чтобы уровень привилегий программы CPL был выше уровня, определяемого полем IOPL в регистре EFLAGES, т. е. необходимо выполнение условия CPL IOPL генерируется нарушение общей защиты и происходит прерывание текущей программы (прерывание 13).
Команды, модифицируемые в соответствии с текущим уровнем привилегий. Это всего две команды:
POPFD — загрузка 4-хбайтного регистра флагов EFLAGS из стека;
POPF — загрузка 2-х байтного регистра флагов EFLAGS из стека.
Команды POPFD и POPF сами по себе не являются привилегированными и любая программа их может содержать. Эти команды могут изменять любые биты в регистрах флагов, кроме битов IOPL и флага IF. Двухразрядное поле IOPL в регистрах флагов может быть изменено (модифицировано), если эти команды встретятся в программах ОС нулевого уровня. Флаг IF модифицируется только при выполнении условия CPL< IOPL. При нарушении указанных условий прерывание не производится, т.к. процессор просто не модифицирует биты IOPL и флаг IF, если это не разрешено.