Пара вопросов относительно колец привилегий процессора x86:
Почему кольца 1 и 2 не используются в большинстве операционных систем? Это просто для поддержания совместимости кода с другими архитектурами или есть лучшая причина?
Существуют ли какие-либо операционные системы, которые действительно используют эти кольца? Или они совсем не используются?
x86
cpu
privileges
пользователь541686
источник
источник
Ответы:
Как любитель операционной системы, я обнаружил, что, поскольку пейджинг (основная часть современной модели защиты) имеет только понятие привилегированного (кольцо 0,1,2) и непривилегированного, преимущества для колец 1 и 2 значительно уменьшились.
Intel намерена создать кольца 1 и 2, чтобы ОС поместила драйверы устройств на этот уровень, чтобы они были привилегированными, но в некоторой степени отделены от остального кода ядра.
Кольца 1 и 2 в некотором смысле «в основном» привилегированные. Они могут получить доступ к страницам супервизора, но если они попытаются использовать привилегированную инструкцию, они по-прежнему будут использовать GPF, как кольцо 3. Так что это неплохое место для драйверов, как планировала Intel ...
Тем не менее, они определенно используются в некоторых дизайнах. На самом деле не всегда напрямую через ОС. Например, VirtualBox , виртуальная машина , помещает код гостевого ядра в кольцо 1. Я также уверен, что некоторые операционные системы действительно их используют, но я просто не думаю, что это популярный дизайн в настоящее время.
источник
С точки зрения конструкции ОС наличие нескольких привилегированных колец - это странность x86 - большинство других процессоров имеют только два режима (супервизор и пользователь). Таким образом, проектирование ОС, требующей нескольких привилегированных режимов, немедленно предотвратит ее перенос на любой другой ЦП. Кроме того, многие современные пакеты виртуализации неправильно эмулируют уровни привилегий, кроме 0 и 3, что значительно затрудняет тестирование операционных систем, использующих эти уровни.
источник
Согласно странице Википедии о кольцевой безопасности , кольца 1 и 2 используются для драйверов (кольцо 1), гостевых операционных систем (кольцо 1) и привилегированного кода ввода-вывода (кольцо 2), гипервизоры находятся в -1/0 (в зависимости от гипервизор), а не 1, как я уже говорил.
Однако лишние два кольца никогда особо не помогали и поэтому стали использоваться редко. TBH, большая часть кода, использующего кольца 1 и 2, наполовину перепрофилировала их по сравнению с их первоначальным использованием (например, гипервизоры). Большинство кода Windows в наши дни, похоже, рассматривают систему как имеющую только два уровня (ядро и пользователь), вероятно, из-за накладных расходов, связанных с входом и выходом из зоны ядра.
источник
-
где-то пропустил . Вы уверены, что гипервизоры используют кольцо 1?