Защищенный режим процессоров Intel


Кольца защиты


Процессор i80286 использует более гибкую и надёжную схему защиты операционной системы и программ друг от друга.

В этой схеме используются привилегии четырёх уровней - от 0 до 3. Самые большие привилегии соответствуют уровню 0. Обычно такими привилегиями обладает ядро операционной системы. Минимальные привилегии у пользовательских программ - уровень 3.

Уровни привилегий часто называют кольцами защиты (см. рис. 10).

Рис. 10. Кольца защиты.

Как распределить привилегии программ в операционной системе? Можно использовать, например, такое распределение:

  • Кольцо 0 - ядро операционной системы, системные драйверы.
  • Кольцо 1 - программы обслуживания аппаратуры, драйверы, программы, работающие с портами ввода/вывода компьютера.
  • Кольцо 2 - системы управления базами данных, расширения операционной системы.
  • Кольцо 3 - прикладные программы, запускаемые пользователем.

Несложные системы могут использовать не все кольца, а только некоторые или даже одно. Например, можно расположить все программы операционной системы в кольце 0, а пользовательские программы - в кольце 3. Это вариант описанной выше схемы "супервизор-пользователь".

Простейшие системы можно полностью реализовать в нулевом кольце. Именно так мы и сделали в примерах программ, приведённых в этой книге.

Как практически используются кольца защиты?

Вспомним, что любой селектор имеет поле RPL (биты 0 и 1). В регистре CS хранится селектор текущего выполняемого сегмента кода. Этому селектору соответствует дескриптор в таблице GDT или LDT. В дескрипторе, в байте доступа располагается поле DPL (биты 5 и 6). Указанные поля участвуют в механизме защиты памяти.

Когда операционная система подготавливает программу для запуска, она формирует в GDT или LDT дескриптор, описывающий сегмент кода программы. В этом дескрипторе в поле DPL байта доступа проставляется номер кольца, в котором будет работать данная программа - текущий уровень привилегий CPL (Current Privilege Level). То есть возможности программы определяются содержимым поля DPL в байте доступа.




- Начало -  - Назад -  - Вперед -