Привілейовані кільця процесора: Чому кільця 1 і 2 не використовуються?


102

Кілька питань щодо привілейованих процесорів x86 CPU:

  • Чому кільця 1 і 2 не використовуються в більшості операційних систем? Це просто підтримка сумісності коду з іншими архітектурами, чи є краща причина?

  • Чи є операційні системи, які фактично використовують ці кільця? Або вони повністю не використовуються?


Відповіді:


111

Як письменник-оператор операційної системи, я виявив, що оскільки пейджінг (основна частина сучасної моделі захисту) має лише концепцію привілейованих (кільце 0,1,2) та непривілейованих, користь для кілець 1 та 2 значно зменшилась.

Намір Intel мати кільця 1 і 2 полягає в тому, щоб ОС розмістила драйвери пристроїв на такому рівні, щоб вони були привілейованими, але дещо відокремленими від решти коду ядра.

Кільця 1 і 2 є певним чином "переважно" привілейованими. Вони можуть отримати доступ до сторінок керівника, але якщо вони спробують скористатись привілейованою інструкцією, вони все одно отримають GPF, як дзвінок 3. Тож це не погане місце для водіїв, як Intel планував ...

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


28
wHOA VirtualBox використовує кільце 1 ?! Це чиста дивовижність !! Велике спасибі за інформацію, це чудова відповідь! +1
користувач541686

10
OS / 2 широко використовується Ring 2 для коду вводу-виводу. Ось чому так важко віртуалізувати.
kinokijuf

Від superuser.com/questions/1402537/… : "Запуск коду 0 коду в кільці 1 викликає безліч додаткових помилок інструкцій, оскільки в кільці 1 заборонено виконувати будь-які привілейовані вказівки, з яких кільце гостя-0 містить безліч. З кожним з цих несправностей, VMM повинен вступити та емулювати код, щоб досягти бажаної поведінки. Хоча це працює, емуляція тисяч цих несправностей дуже дорога і сильно шкодить продуктивності віртуального гостя ".
Дастін Опреа

24

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


7

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

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


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

Хе, не думав, повинні бути гіпервізори в -1, а гостьові ОС в 1, оновлять це швидко
Necrolis

4
Windows використовує лише два кільця, оскільки він був розроблений для роботи на інших процесорах (нині не існують), у яких було лише два.
Девід

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