Поля и флаги используемые сегментным и страничным уровнями защиты

Продолжаю перевод 5 главы “Protection” руководства “Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3 (3A & 3B):System Programming Guide”

Секция 5.2 FIELDS AND FLAGS USED FOR SEGMENT-LEVEL AND PAGE-LEVEL PROTECTION

Другие главы

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

  • Descriptor type (S) flag — (бит 12 во втором двойном слове сегментного дескриптора) определяет является ли сегмент системным или сегментом кода или данных.
  • Type field — (Биты с 8 по 11 во втором двойном слове сегментного дескриптора) определяют тип сегмента (кодовый, данных или системный).
  • Limit field — (Биты с 0 по 15 первого двойного слова и биты с 16 по 19 второго двойного слова сегментного дескриптора) вместе с флагами G (granularity) и E определяют размер сегмента.
  • G flag — (Бит 23 второго двойного слова сегментного дескриптора). Вместе с полем limit и флагом E определяет размер сегмента (для сегментов данных).
  • E flag — (Бит 10 второго двойного слова сегментного дескриптора для сегмента данных) вместе с флагом G и полем limit определяет размер сегмента.
  • Descriptor privilege level (DPL) field — (Биты 13 и 14 во втором двойном слове сегментного дескриптора) определяют уровень привелегий сегмента.
  • Requested privilege level (RPL) field — (Биты 0 и 1 любого селектора сегмента)
    Определяют требуемый уровень привелегий сегментного селектора.

  • Current privilege level (CPL) field — (Биты 0 и 1 сегментного регистра CS) означают уровень привелегий текущей выполняемой программы или процедуры. Термин CPL относится к значению этого поля.
  • User/supervisor (U/S) flag — (Бит 2 записей в страничных структурах) определяет тип страницы: пользователи или супервизор.
  • Read/write (R/W) flag — (Бит 1 в записях страничных структур) определяет тип доступа разрешенный для страницы: read-only (только чтение) или read/write (чтение запись).
  • Execute-disable (XD) flag — (Бит 63 некоторых записей страничных структур) определяет тип доступа разрешенный для страницы: executable (выполнимая) или not-executable (не выполнимая).

Рисунок 5-1 показывает расположение различных полей и флагов в дескрипторах сегментов данных, кода и системных; Рисунок 3-6 показывает расположение RPL (или CPL) полей в селекторах сегментов (или регистре CS); Глава 4 указывает расположение различных полей и флагов U/S, R/W и XD в записях страничных структур.

descriptor-fields-used-for-protection
(Иллюстрация из руководства Intel)

Много различных стилей схем защиты может быть реализовано с помощью имеющихся полей и флагов. Когда операционная система создает дескриптор, она присваивает значения этим полям и флагам в соответствии с выбранным стилем защиты. Прикладная программа обычно не имеет доступа к этим полям и флагам.

Следующие разделы описывают как процессор использует выше перечисленные поля и флаги для осуществления различных категорий проверок перечисленных во введении к этой главе.

Продолжение…

Оставьте комментарий