¿Por qué las CPU x86 solo usan dos de cada cuatro “anillos”?

Apr 22, 2025
Hardware
CONTENIDO NO CUBIERTO

Cuando aprenda más sobre cómo funcionan e interactúan los sistemas operativos y el hardware en el que se ejecutan, es posible que se sorprenda al ver lo que parecen ser rarezas o la infrautilización de los "recursos". ¿Porqué es eso? La publicación de preguntas y respuestas del superusuario de hoy tiene la respuesta a la pregunta de un lector curioso.

La sesión de preguntas y respuestas de hoy nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, una agrupación de sitios web de preguntas y respuestas impulsada por la comunidad.

Foto cortesía de Lemsipmatt (Flickr) .

La pregunta

El lector de superusuario AdHominem quiere saber por qué las CPU x86 solo usan dos de los cuatro anillos:

Los sistemas x86 basados ​​en Linux y Windows solo usan Anillo 0 para el modo kernel y Anillo 3 para el modo de usuario. ¿Por qué los procesadores incluso distinguen cuatro anillos diferentes si todos terminan usando solo dos de todos modos? ¿Ha cambiado esto con la arquitectura AMD64?

¿Por qué las CPU x86 solo usan dos de cada cuatro anillos?

La respuesta

El colaborador de superusuario Jamie Hanrahan tiene la respuesta para nosotros:

Hay dos razones principales.

La primera es que, aunque las CPU x86 ofrecen cuatro anillos de protección de la memoria, la granularidad de la protección que ofrecen es solo a nivel de segmento. Es decir, cada segmento se puede configurar en un anillo específico (nivel de privilegio) junto con otras protecciones como deshabilitar la escritura. Pero no hay tantos descriptores de segmento disponibles. A la mayoría de los sistemas operativos les gustaría tener una granularidad mucho más fina de protección de memoria, como ... para páginas individuales.

Por lo tanto, ingrese la protección basada en tablas de páginas. La mayoría, si no todos, los sistemas operativos x86 modernos ignoran más o menos el mecanismo de segmentación (tanto como pueden de todos modos) y confían en la protección disponible contra los bits de orden inferior en las entradas de la tabla de páginas. Uno de estos se llama bit "privilegiado". Este bit controla si el procesador tiene que estar o no en uno de los niveles "privilegiados" para acceder a la página. Los niveles "privilegiados" son PL 0, 1 y 2 . Pero es solo un bit, por lo que en el nivel de protección página por página, el número de "modos" disponibles en lo que respecta a la protección de la memoria es solo dos: una página puede ser accesible desde el modo no privilegiado, o no. Por lo tanto, solo dos anillos. Para tener cuatro anillos posibles para cada página, tendrían que tener dos bits de protección en cada entrada de la tabla de páginas para codificar uno de los cuatro números de anillo posibles (al igual que los descriptores de segmento). Sin embargo, no lo hacen.

La otra razón es el deseo de portabilidad del sistema operativo. No se trata solo de x86; Unix nos enseñó que un sistema operativo podía ser relativamente portátil para múltiples arquitecturas de procesadores, y que era algo bueno. Y algunos procesadores solo admiten dos anillos. Al no depender de múltiples anillos en la arquitectura, los implementadores del sistema operativo hicieron que los sistemas operativos fueran más portátiles.

Hay una tercera razón que es específica del desarrollo de Windows NT. Los diseñadores de NT (David Cutler y su equipo, a quienes Microsoft contrató en DEC Western Region Labs) tenían una amplia experiencia previa en VMS; de hecho, Cutler y algunos otros se encontraban entre los diseñadores originales de VMS. Y el procesador VAX para el que se diseñó VMS tiene cuatro anillos (VMS usa cuatro anillos).

Pero los componentes que se ejecutaron en VMS Anillos 1 y 2 (Record Management Services y CLI, respectivamente) se dejaron fuera del diseño de NT. Anillo 2 en VMS no se trataba realmente de la seguridad del sistema operativo, sino más bien de preservar el entorno CLI del usuario de un programa a otro, y Windows no tenía ese concepto; la CLI se ejecuta como un proceso ordinario. En cuanto a VMS Anillo 1 , el código RMS en Anillo 1 Tuve que llamar a Anillo 0 con bastante frecuencia, y las transiciones de anillo son caras. Resultó mucho más eficiente ir a Anillo 0 y terminar con eso en lugar de tener un montón de Anillo 0 transiciones dentro del Anillo 1 código (de nuevo, no es que NT tenga algo como RMS de todos modos).

En cuanto a por qué x86 implementó cuatro anillos mientras que los sistemas operativos no los usaban, estamos hablando de sistemas operativos de diseño mucho más reciente que x86. Muchas de las características de programación del sistema de x86 se diseñaron mucho antes de que se implementaran en él NT o verdaderos núcleos Unix-ish, y no sabían realmente qué utilizaría el sistema operativo. No fue hasta que conseguimos la paginación en x86 que pudimos implementar verdaderos kernels tipo Unix o tipo VMS.

Los sistemas operativos x86 modernos no solo ignoran en gran medida la segmentación (simplemente configuran los segmentos C, D y S con una dirección base de 0 y un tamaño de 4 GB; los segmentos F y G a veces se usan para señalar estructuras de datos clave del sistema operativo ), también ignoran en gran medida cosas como "segmentos de estado de tarea". El mecanismo TSS fue claramente diseñado para el cambio de contexto de subprocesos, pero resulta que tiene demasiados efectos secundarios, por lo que los sistemas operativos x86 modernos lo hacen "a mano". La única vez que x86 NT cambia las tareas de hardware es para algunas condiciones verdaderamente excepcionales, como una excepción de doble falla.

Con respecto a la arquitectura x64, muchas de estas características en desuso quedaron fuera. Para su crédito, AMD habló con los equipos del kernel del sistema operativo y les preguntó qué necesitaban de x86, qué no necesitaban o no querían y qué les gustaría agregar. Los segmentos en x64 existen solo en lo que podría llamarse forma vestigial, el cambio de estado de la tarea no existe, etc., y los sistemas operativos continúan usando solo dos anillos.


¿Tiene algo que agregar a la explicación? Habla en los comentarios. ¿Quieres leer más respuestas de otros usuarios de Stack Exchange expertos en tecnología? Consulte el hilo de discusión completo aquí .

.entrada-contenido .entry-footer

Why Do X86 CPUs Only Use Two Out Of Four “Rings”?

Why Do X86 CPUs Only Use 2 Out Of 4 Rings?

Lord Of The X86 Rings: A Portable User Mode Privilege Separation Architecture On X86


Hardware - Artículos más populares

Cómo ejecutar el software de Windows en una Chromebook

Hardware Feb 3, 2025

Chromebooks normalmente no ejecutan software de Windows, eso es lo mejor y lo peor de ellos. No necesita antivirus u otra basura de Windows ... pero tampoco puede instal..


Cómo usar Trackr para encontrar sus llaves, billetera, teléfono o cualquier otra cosa

Hardware Jul 11, 2025

Calculo que la persona promedio pierde sus llaves más de diecisiete veces por hora. Trackr es un rastreador Bluetooth que puedes usar para encontrar tus llaves en el..


Cómo agregar una estación de carga a su mesita de noche (sin arruinarla)

Hardware Mar 29, 2025

CONTENIDO NO CUBIERTO Si sus dispositivos nunca se alejan de su lado, ¿qué mejor lugar para cargarlos que al lado de su cama? Con algunas piezas económicas y unos minutos de ti..


Cómo usar Ethernet con su Chromecast para una transmisión rápida y confiable

Hardware Mar 3, 2025

CONTENIDO NO CUBIERTO El Chromecast es un pequeño dispositivo de transmisión bastante impresionante, pero si tienes una mala conexión Wi-Fi (o no tienes ninguna), vas a tener u..


Cómo compartir rápidamente su ubicación usando mensajes en su Apple Watch

Hardware Dec 11, 2024

CONTENIDO NO CUBIERTO ¿Trata de describir dónde se encuentra y cómo llegar a un amigo o familiar? Puede enviar rápida y fácilmente su ubicación a alguien cuando ve una conve..


Cómo ajustar la sensibilidad táctil en el control remoto del nuevo Apple TV

Hardware Nov 18, 2024

Si recientemente compró el último Apple TV con el nuevo control remoto sensible al tacto, entonces probablemente se haya enfrentado al método de ingreso de texto tan odiado. Si t..


Cómo volver a cargar Windows 8.1 en su tableta Surface Pro

Hardware Feb 4, 2025

CONTENIDO NO CUBIERTO Si actualizó su tableta Surface Pro a la vista previa de Windows 10 y todo se rompió, o simplemente necesita reinstalarlo por completo, hoy le mostraremos ..


Explicación de los discos RAM: qué son y por qué probablemente no debería usar uno

Hardware Feb 8, 2025

La RAM de su computadora es aún más rápida que incluso las unidades de estado sólido modernas. Los discos RAM aprovechan esto, utilizando la RAM de su computadora como una unida..


Categorías