# Modos de operación de la unidad central de procesamiento

Los modos del procesador son los modos de operación de las unidades centrales de procesamiento de algunas arquitecturas de computadoras mediante las que establecen ciertas restricciones sobre el tipo y ámbito de las operaciones que pueden llevar a cabo ciertos procesos al ser ejecutados por las CPU. A través de este diseño, el sistema operativo puede ser ejecutado con mayores privilegios que una de sus aplicaciones software.
Idealmente, solo al altamente confiable código del núcleo se le permite ser ejecutado en modo no restringido; cualquier otra cosa (incluyendo las porciones del sistema operativo cuyas funciones no sean las de supervisión) es ejecutada en un modo restringido, y debe emplear las llamadas al sistema (o el mecanismo correspondiente) para solicitar al núcleo que lleve a cabo en su nombre cualquier operación que pueda dañar o poner en peligro al sistema, haciendo imposible que programas no confiables alteren o dañen a otros programas, o al sistema en sí.
Sin embargo, en la práctica, las llamadas al sistema pueden tomar tiempo y perjudicar al rendimiento del sistema, por lo que no es extraño que algunos diseñadores del sistema permitan a algunos programas de tiempo crítico (especialmente a los controladores de dispositivo) ser ejecutados con los plenos privilegios del núcleo.
Se pueden implementar múltiples modos, permitiendo a un hipervisor ejecutar varios supervisores bajo él, diseño que sirve de base para muchos sistemas de máquinas virtuales disponibles a día de hoy.

## Modos

El modo no restringido es llamado a menudo modo núcleo o modo kernel, pero es designado de muchas formas (modo maestro, modo supervisor, modo privilegiado, estado supervisor, etc.). Los modos restringidos suelen ser llamados modos usuario, y también reciben múltiples nombres (modo esclavo, estado problemático, etc.).
En modo núcleo, la CPU puede realizar cualquier operación permitida por su arquitectura: cualquier instrucción puede ser ejecutada, cualquier operación de E/S iniciada, cualquier área de la memoria accedida, etcétera. En los otros modos, ciertas restricciones son impuestas por el hardware en las operaciones de la CPU. Por lo general, ciertas instrucciones no son permitidas (en especial aquellas que incluyen operaciones de E/S que puedan alterar el estado global de la máquina), algunas áreas de la memoria no pueden ser accedidas, etc. Las capacidades de la CPU en modo usuario son generalmente un subconjunto de aquellas disponibles en el modo núcleo, pero en algunos casos (tales como la emulación de arquitecturas no nativas), podrían ser significativamente diferentes de aquellas disponibles en el modo núcleo estándar.
Algunas arquitecturas de CPUs soportan múltiples modos usuario, a menudo con una jerarquía de privilegios. Se dice entonces que estas arquitecturas tienen seguridad basada en anillos, donde la jerarquía de privilegios se asemeja a un conjunto concéntrico de anillos, en cuyo centro está el modo núcleo. El hardware de Multics fue la primera implementación significativa de la seguridad en anillos, pero muchas otras plataformas hardware habían sido diseñadas de forma parecida, incluyendo el modo protegido del Intel 80286, y el IA-64 también, aunque es referido por un nombre diferente en esos casos.
La protección de modos puede extenderse a los recursos más allá del hardware de la propia CPU. Los registros hardware llevan la cuenta del modo de operación actual de la CPU, pero adicionalmente registros de memoria virtual, entradas a la tabla de páginas y otros datos pueden hacer lo propio con los identificadores de modos de otros recursos. Por ejemplo, una CPU puede estar en el anillo 0 como se indica en el registro de estado en la propia CPU, pero cada acceso a memoria debe además ser validado respecto a un número de anillo distinto para el segmento de memoria virtual apuntado por el acceso, y/o respecto al número de anillo para la página física objetivo (si la hay). Esto ha sido demostrado con el sistema portátil PSP.
* ↑ NdT: En la versión en inglés, computer system, no operating system (sistema operativo).
* ↑ NdT: Algunos de estos nombres son una traducción literal de los que se usan en inglés. Probablemente algunos no se usan en español.
* Datos: Q2247050