Значение CPL 0 называется режимом ядра. Кстати, значение CPL меньше 3 называется режимом супервизора, а значение CPL 3 называется режимом пользователя.
Инструкция ENCLU
(часть набора инструкций Intel SGX) может быть выполнена только в пользовательском режиме. Это единственная известная мне инструкция, которая может быть выполнена только в пользовательском режиме. Если CPL <3, выполнение <code>ENCLU приводит к недопустимому исключению кода операции.
Есть некоторые вещи, которые код режима супервизора может запретить самому делать , но все же позволяет коду режима пользователя выполнять их :
- Если установлено
CR4.SMEP
, сбой страницы происходит, если код режима супервизора пытается извлечь инструкцию со страницы пользователя.
- Если установлено
CR4.SMAP
, сбой страницы происходит, если код режима супервизора пытается получить доступ к данным со страницы пользователя.
Стоит отметить, что регистр выбора событий производительности содержит флаги, называемые флагом пользовательского режима и флагом режима операционной системы. В этом контексте режим «пользователь» включает уровни привилегий 1, 2 и 3, а режим «операционная система» включает уровень привилегий 0.