¿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 agregar auriculares Bluetooth a su HDTV

Hardware Jun 16, 2025

Agregar auriculares inalámbricos a su televisor es una excelente manera de mirar sin molestar a todos los demás en la casa. A continuación se explica cómo equipar su televisor c..


Cómo deshacer el envío de un mensaje en la aplicación Gmail para iOS

Hardware Dec 6, 2024

CONTENIDO NO CUBIERTO Desde hace más de un año, Gmail le permite deshacer el envío de un correo electrónico . Sin embargo, esta función solo estaba disponible ..


Cómo acelerar su unidad de estado sólido volviendo a alinear sus particiones

Hardware Sep 19, 2025

Si ha migrado su sistema operativo de un disco duro mecánico a un unidad de estado sólido , Es posible que las particiones no estén alineadas correctamente. Esto p..


Cómo montar una GoPro en su cámara DSLR

Hardware Sep 15, 2025

CONTENIDO NO CUBIERTO Si tiene una cámara DSLR con zapato caliente , es fácil conectar varios flashes y otros accesorios directamente a su cámara. Pero con un pa..


Cómo migrar sus bombillas inteligentes al nuevo Philips Hue Bridge

Hardware Oct 16, 2025

Philips lanzó recientemente un nuevo puente Hue compatible con el nuevo puente HomeKit de Apple. Siga leyendo mientras le mostramos cómo migrar sus viejas bombillas Hue a su nuevo..


Cómo administrar sin esfuerzo sus colecciones de Kindle

Hardware Aug 1, 2025

CONTENIDO NO CUBIERTO La función "Colecciones" del Kindle tiene mucho potencial, pero Amazon ha hecho un trabajo terrible al implementarla. Siga leyendo mientras le mostramos có..


Desde el cuadro de consejos: ejecute el servidor de contenido de Calibre desde la línea de comandos, puntúe los discos duros en The Cheap y ajuste el menú de Windows 8

Hardware Sep 11, 2025

CONTENIDO NO CUBIERTO Una vez a la semana reunimos tres excelentes consejos para lectores y los compartimos con la mayor audiencia de How-To Geek. Esta semana vamos a ver cómo ej..


Cómo instalar software adicional en su enrutador doméstico (DD-WRT)

Hardware Feb 19, 2025

¿Alguna vez ha querido tener funciones adicionales como correo electrónico, Bit-torrent o incluso MySQL directamente en su enrutador? Bueno, tal vez ahora puedas. How-To Geek se s..


Categorías