Un par de preguntas sobre los anillos de privilegios de la CPU x86:
¿Por qué la mayoría de los sistemas operativos no utilizan los anillos 1 y 2? ¿Es solo para mantener la compatibilidad del código con otras arquitecturas o hay una mejor razón?
¿Existe algún sistema operativo que realmente use esos anillos? ¿O están completamente sin usar?
x86
cpu
privileges
usuario541686
fuente
fuente
Respuestas:
Como escritor de sistemas operativos aficionado, descubrí que debido a que la paginación (una parte importante del modelo de protección moderno) solo tiene un concepto de privilegiado (anillo 0, 1, 2) y no privilegiado, el beneficio de los anillos 1 y 2 se redujo considerablemente.
La intención de Intel al tener los anillos 1 y 2 es que el sistema operativo coloque los controladores de dispositivo en ese nivel, por lo que tienen privilegios, pero algo separados del resto del código del kernel.
Los anillos 1 y 2 son, en cierto modo, "en su mayoría" privilegiados. Pueden acceder a las páginas del supervisor, pero si intentan utilizar una instrucción privilegiada, seguirán usando GPF como lo haría el anillo 3. Así que no es un mal lugar para los conductores como planeó Intel ...
Dicho esto, definitivamente tienen uso en algunos diseños. De hecho, no siempre directamente por el sistema operativo. Por ejemplo, VirtualBox , una máquina virtual , coloca el código del kernel invitado en el anillo 1. También estoy seguro de que algunos sistemas operativos los utilizan, simplemente no creo que sea un diseño popular en este momento.
fuente
Desde la perspectiva del diseño del sistema operativo, tener múltiples anillos con privilegios es una rareza de x86: la mayoría de las otras CPU solo tienen dos modos (supervisor y usuario). Como tal, diseñar un sistema operativo para requerir múltiples modos privilegiados evitará inmediatamente que se transfiera a cualquier otra CPU. Además, muchos paquetes de virtualización modernos no emulan correctamente niveles de privilegios distintos de 0 y 3, lo que hace que los sistemas operativos que utilizan estos niveles sean mucho más difíciles de probar.
fuente
Según la página de Wikipedia sobre Ring Security , los anillos 1 y 2 se utilizan para controladores (anillo 1), sistemas operativos invitados (anillo 1) y código privilegiado de E / S (anillo 2), los hipervisores se encuentran en -1/0 (según el hiper-visor) no 1 como dije anteriormente.
Sin embargo, los dos anillos adicionales nunca ayudaron realmente y, por lo tanto, rara vez se usaron. TBH, la mayoría de los códigos que usan los anillos 1 y 2 los han semi-reutilizado de su uso original (como los hipervisores). La mayoría del código de Windows en estos días parece tratar el sistema como si solo tuviera dos niveles (kernel y usuario), probablemente debido a la sobrecarga asociada con la entrada y salida de la tierra del kernel.
fuente
-
lugar. ¿Estás seguro de que los hipervisores usan el anillo 1?