Находится ли процессор x86 в режиме ядра, когда значение CPL регистра CS равно 0? - PullRequest
1 голос
/ 04 апреля 2019

Последние два бита регистра CS содержат текущий уровень привилегий (CPL), который может содержать либо значение 0, либо 1, либо 2, либо 3.

.

Если значение CPL равно 0, означает ли это, что ЦП находится в режиме ядра (и, следовательно, может делать все)? или есть другие вещи, которые должны применяться для того, чтобы процессор был в режиме ядра?

Ответы [ 2 ]

2 голосов
/ 04 апреля 2019

Да, CPL = 0 означает режим ядра / супервизора.Однако в реальном режиме CPL также равен 0, но не отражается в CS.Аналогично, в виртуальном режиме 8086 CPL равен 3 и не отражается в CS.

В некоторой степени, вы также можете проверить защищенный режим, проверив бит 0 CR0 с помощью инструкции SMSW (он возвращает 16 младших битов CR0).Бит будет установлен в 1 в режиме виртуального 8086, потому что процессор может попасть туда только через защищенный режим (вы можете рассматривать первый как подрежим последнего).

1 голос
/ 04 апреля 2019

Значение CPL 0 называется режимом ядра. Кстати, значение CPL меньше 3 называется режимом супервизора, а значение CPL 3 называется режимом пользователя.

Инструкция ENCLU (часть набора инструкций Intel SGX) может быть выполнена только в пользовательском режиме. Это единственная известная мне инструкция, которая может быть выполнена только в пользовательском режиме. Если CPL <3, выполнение <code>ENCLU приводит к недопустимому исключению кода операции.

Есть некоторые вещи, которые код режима супервизора может запретить самому делать , но все же позволяет коду режима пользователя выполнять их :

  • Если установлено CR4.SMEP, сбой страницы происходит, если код режима супервизора пытается извлечь инструкцию со страницы пользователя.
  • Если установлено CR4.SMAP, сбой страницы происходит, если код режима супервизора пытается получить доступ к данным со страницы пользователя.

Стоит отметить, что регистр выбора событий производительности содержит флаги, называемые флагом пользовательского режима и флагом режима операционной системы. В этом контексте режим «пользователь» включает уровни привилегий 1, 2 и 3, а режим «операционная система» включает уровень привилегий 0.

...