Los modos de CPU (también llamados modos de procesador, estados de CPU, niveles de privilegios de CPU y otros nombres) son modos operativos para la unidad central de procesamiento de la mayoría de las arquitecturas de computadora que imponen restricciones sobre el tipo y alcance de las operaciones que pueden realizarse mediante instrucciones ejecutadas por el UPC. 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]
Idealmente, sólo se permite ejecutar código del kernel altamente confiable en modo sin restricciones; todo lo demás (incluidas las partes del sistema operativo que no son de supervisión) se ejecuta en modo restringido y debe utilizar una llamada al sistema (a través de interrupción ) para solicitar al kernel que realice en su nombre cualquier operación que pueda dañar o comprometer el sistema, haciendo imposible que programas que no son de confianza para alterar o dañar otros programas (o el propio sistema informático). Los controladores de dispositivos están diseñados para ser parte del kernel debido a la necesidad de acceso frecuente a 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 a menudo se denomina modo kernel, pero existen muchas otras designaciones ( modo maestro , modo supervisor , modo privilegiado , etc.). Los modos restringidos generalmente se denominan modos de usuario, pero también se les conoce con muchos otros nombres ( modo esclavo, estado de problema, etc.). [2]
Algunas arquitecturas de CPU admiten más modos que esos, a menudo con una jerarquía de privilegios. A menudo se dice que estas arquitecturas tienen seguridad basada en anillos, en la que 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 la 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 le conoce con un nombre diferente. .
La protección del modo puede extenderse a recursos más allá del propio hardware de la CPU. Los registros de hardware rastrean el modo operativo actual de la CPU, pero registros adicionales de memoria virtual , entradas de tablas de páginas y otros datos pueden rastrear identificadores de modo para otros recursos. Por ejemplo, una CPU puede estar funcionando en el Anillo 0 como lo indica una palabra de estado en la propia CPU, pero cada acceso a la memoria puede validarse adicionalmente con 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 timbre 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 eficientemente 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 que 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 , las series 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 instalaciones de hardware al código que se ejecuta en ese modo. El primer modo recibe 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 recibe 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 múltiples modos sin control en la serie B5000.
RISC-V tiene tres modos de CPU principales: 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.