Кольца привилегий ЦП: почему кольца 1 и 2 не используются?


102

Пара вопросов относительно колец привилегий процессора x86:

  • Почему кольца 1 и 2 не используются в большинстве операционных систем? Это просто для поддержания совместимости кода с другими архитектурами или есть лучшая причина?

  • Существуют ли какие-либо операционные системы, которые действительно используют эти кольца? Или они совсем не используются?


Ответы:


112

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

Intel намерена создать кольца 1 и 2, чтобы ОС поместила драйверы устройств на этот уровень, чтобы они были привилегированными, но в некоторой степени отделены от остального кода ядра.

Кольца 1 и 2 в некотором смысле «в основном» привилегированные. Они могут получить доступ к страницам супервизора, но если они попытаются использовать привилегированную инструкцию, они по-прежнему будут использовать GPF, как кольцо 3. Так что это неплохое место для драйверов, как планировала Intel ...

Тем не менее, они определенно используются в некоторых дизайнах. На самом деле не всегда напрямую через ОС. Например, VirtualBox , виртуальная машина , помещает код гостевого ядра в кольцо 1. Я также уверен, что некоторые операционные системы действительно их используют, но я просто не думаю, что это популярный дизайн в настоящее время.


28
Кто VirtualBox использует кольцо 1 ?! Это просто круто !! Большое спасибо за информацию, отличный ответ! +1
user541686

10
OS / 2 широко использовала Ring 2 для кода ввода-вывода. Вот почему так сложно виртуализировать.
kinokijuf

Из superuser.com/questions/1402537/… : «Запуск кода кольца 0 в кольце 1 вызывает множество дополнительных ошибок инструкций, поскольку кольцу 1 не разрешено выполнять какие-либо привилегированные инструкции, которых в гостевом кольце 0 содержится много. из этих ошибок VMM должен вмешаться и эмулировать код для достижения желаемого поведения. Хотя это работает, эмуляция тысяч таких ошибок очень дорога и серьезно снижает производительность виртуализированного гостя ».
Дастин Опреа,

24

С точки зрения конструкции ОС наличие нескольких привилегированных колец - это странность x86 - большинство других процессоров имеют только два режима (супервизор и пользователь). Таким образом, проектирование ОС, требующей нескольких привилегированных режимов, немедленно предотвратит ее перенос на любой другой ЦП. Кроме того, многие современные пакеты виртуализации неправильно эмулируют уровни привилегий, кроме 0 и 3, что значительно затрудняет тестирование операционных систем, использующих эти уровни.


7

Согласно странице Википедии о кольцевой безопасности , кольца 1 и 2 используются для драйверов (кольцо 1), гостевых операционных систем (кольцо 1) и привилегированного кода ввода-вывода (кольцо 2), гипервизоры находятся в -1/0 (в зависимости от гипервизор), а не 1, как я уже говорил.

Однако лишние два кольца никогда особо не помогали и поэтому стали использоваться редко. TBH, большая часть кода, использующего кольца 1 и 2, наполовину перепрофилировала их по сравнению с их первоначальным использованием (например, гипервизоры). Большинство кода Windows в наши дни, похоже, рассматривают систему как имеющую только два уровня (ядро и пользователь), вероятно, из-за накладных расходов, связанных с входом и выходом из зоны ядра.


1
Я думаю, ты -где-то пропустил . Вы уверены, что гипервизоры используют кольцо 1?
user541686

Хех, не думал, должны быть гипервизоры в -1 и гостевые ОС в 1,
обновятся так

4
Windows использует только два кольца, потому что он был разработан для работы на других процессорах (ныне несуществующих), у которых было только два.
Дэвид

На мой взгляд, переключение режимов требует небольших затрат. Насколько я понимаю, только оборудование может назначать более привилегированные привилегии процессору (например, если произошло прерывание с завершением ввода-вывода). Если это переключение привилегий происходит аппаратно, я сомневаюсь, что переключать кольца нетривиально. Я думаю, что Windows, Linux или MacOS используют только два самых крайних кольца, потому что архитекторы резервируют средние кольца для таких вещей, как виртуализация на базе ОС.
Нейт Саймер,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.