Los modos de CPU (también llamados modos de procesador, estados de CPU, niveles de privilegio de CPU y otros nombres) son modos operativos de la unidad central de procesamiento de la mayoría de las arquitecturas informáticas que imponen restricciones sobre el tipo y el alcance de las operaciones que pueden realizar las instrucciones que ejecuta la CPU. Por ejemplo, este diseño permite que un sistema operativo se ejecute con más privilegios que el software de aplicación al ejecutar los sistemas operativos y las aplicaciones en diferentes modos. [1]
Lo ideal es que solo el código del núcleo altamente confiable pueda ejecutarse en el modo sin restricciones; todo lo demás (incluidas las partes no supervisoras del sistema operativo) se ejecuta en un modo restringido y debe usar una llamada al sistema (a través de una interrupción ) para solicitar al núcleo que realice en su nombre cualquier operación que pueda dañar o comprometer el sistema, lo que hace imposible que los programas no confiables alteren o dañen otros programas (o el sistema informático en sí). Los controladores de dispositivos están diseñados para ser parte del núcleo debido a la necesidad de un acceso frecuente de E/S .
Se pueden implementar múltiples modos, por ejemplo, permitir que un hipervisor ejecute múltiples supervisores de sistemas operativos debajo de él, que es el diseño básico de muchos sistemas de máquinas virtuales disponibles en la actualidad.
El modo sin restricciones se suele denominar modo kernel, pero existen muchas otras designaciones ( modo maestro , modo supervisor , modo privilegiado , etc.). Los modos restringidos suelen denominarse modos de usuario, pero también se conocen con muchos otros nombres ( modo esclavo, estado de problema, etc.). [2]
Algunas arquitecturas de CPU admiten más modos que estos, a menudo con una jerarquía de privilegios. A menudo se dice que estas arquitecturas tienen seguridad basada en anillos, en donde la jerarquía de privilegios se asemeja a un conjunto de anillos concéntricos, con el modo kernel en el centro. El hardware Multics fue la primera implementación significativa de seguridad en anillo, pero muchas otras plataformas de hardware se han diseñado siguiendo líneas similares, incluido el modo protegido Intel 80286 y también el IA-64 , aunque en estos casos se lo conoce con un nombre diferente.
La protección de modo puede extenderse a recursos que van más allá del propio hardware de la CPU. Los registros de hardware rastrean el modo operativo actual de la CPU, pero los registros de memoria virtual adicionales , las entradas de la tabla de páginas y otros datos pueden rastrear identificadores de modo para otros recursos. Por ejemplo, una CPU puede estar operando en el Anillo 0 como lo indica una palabra de estado en la propia CPU, pero cada acceso a la memoria puede ser validado adicionalmente contra un número de anillo separado para el segmento de memoria virtual al que se dirige el acceso, y/o contra un número de anillo para la página física (si la hay) a la que se dirige. Esto se ha demostrado con el sistema portátil PSP .
El hardware que cumple con los requisitos de virtualización de Popek y Goldberg hace que escribir software para soportar de manera eficiente una máquina virtual sea mucho más simple. Un sistema de este tipo puede ejecutar software que "cree" que se está ejecutando en modo supervisor, pero en realidad se está ejecutando en modo usuario.
Varios sistemas informáticos introducidos en la década de 1960, como IBM System/360 , DEC PDP-6 / PDP-10 , la serie GE-600 / Honeywell 6000 y las series Burroughs B5000 y B6500 , admiten dos modos de CPU: un modo que otorga privilegios completos al código que se ejecuta en ese modo y un modo que impide el acceso directo a los dispositivos de entrada/salida y algunas otras funciones de hardware al código que se ejecuta en ese modo. El primer modo se conoce con nombres como estado de supervisor (System/360), modo ejecutivo (PDP-6/PDP-10), modo maestro (serie GE-600), modo de control (serie B5000) y estado de control (serie B6500). El segundo modo se conoce con nombres como estado de problema (System/360), modo de usuario (PDP-6/PDP-10), modo esclavo (serie GE-600) y estado normal (serie B6500); Hay varios modos sin control en la serie B5000.
RISC-V tiene tres modos principales de CPU: modo de usuario (U), modo de supervisor (S) y modo de máquina (M). [3] La virtualización se admite a través de una configuración CSR ortogonal en lugar de un cuarto modo.