El procesador ejecuta programas en modo usuario o modo kernel. Cuando usa su PC, el procesador cambia con frecuencia entre estos dos tipos de modos, dependiendo de lo que esté haciendo. Pero ¿qué son el Modo Usuario y el Modo Kernel? ¿Cuál es la diferencia entre estos dos modos? ¿Por qué la CPU necesita cambiar entre estos modos?
¿Qué es el modo de usuario en Windows?

Modo de usuario en Windows
Cuando inicia un programa en Windows, ese programa se inicia en modo de usuario. Siempre que un programa en Modo Usuario quiere ejecutarse, Windows crea un proceso para ello. Un proceso es simplemente un programa que está ejecutando un procesador o un programa que Windows ha programado para ejecutar. Y cada vez que Windows crea un proceso, también crea un espacio de direcciones virtuales para ese proceso.
El espacio de direcciones virtuales es el conjunto de direcciones lógicas (no físicas) que Windows asigna a un proceso. Los procesos pueden utilizar estas direcciones para almacenar datos en la memoria física.
Además, el espacio de direcciones virtuales está aislado. Por lo tanto, el espacio de direcciones virtuales de un proceso no interfiere con el espacio de direcciones de otro proceso. Y debido a que los programas en Modo Usuario tienen espacios de direcciones separados, si un programa falla, ese programa fallará solo y no afectará a otros programas ni a todo el sistema operativo con sus efectos.
Otra forma de describir las aplicaciones en modo de usuario es utilizar el término "menos privilegiados". Windows impide que las aplicaciones en modo de usuario accedan directamente a recursos críticos del sistema, lo que las hace menos privilegiadas. Por ejemplo, si una aplicación quiere acceder al hardware, debe pasar por el kernel del sistema operativo mediante llamadas al sistema (un estilo de programación en el que un programa de computadora solicita un servicio del kernel del sistema operativo y se ejecuta).
En pocas palabras, los programas de aplicaciones, como los videojuegos, se ejecutan en modo de usuario. Tienen pocos privilegios, por lo que no tienen acceso ilimitado a los recursos del sistema. Cada aplicación del modo de usuario tiene su propio espacio de direcciones. Una aplicación no puede cambiar el espacio de direcciones de otra aplicación. Por lo tanto, si una aplicación falla, no afecta a otros programas que se ejecutan en la computadora.
¿Qué es el modo kernel en Windows?
![Diferencia entre el modo Kernel y el modo Usuario en Windows Diferencia entre el modo Kernel y el modo Usuario en Windows]()
Modo kernel en Windows
Antes de hablar del Modo Kernel, primero debemos saber qué es un "kernel" y cómo funciona con Windows.
Kernel es el cerebro de un sistema operativo. Es el componente de software central del que dependen todos los demás componentes del sistema operativo. El kernel administra el hardware de la computadora, programa las ejecuciones en la computadora y maneja las interacciones entre el hardware y el software de la aplicación.
En resumen, el kernel es la pieza de código más privilegiada que se ejecuta en el sistema, porque es el código que interactúa directamente con el hardware. Cualquier otro programa que quiera utilizar recursos de hardware deberá solicitar acceso a través del kernel.
Cuando un programa de aplicación se ejecuta en modo de usuario y desea acceder a hardware como una cámara web, debe solicitar el kernel mediante llamadas al sistema. Para atender estas solicitudes, la CPU, en el momento de la ejecución del programa, cambia del modo de usuario al modo kernel.
Una vez que se completa la ejecución, la CPU vuelve al modo de usuario y comienza a ejecutar el siguiente proceso programado. Esto se llama "cambio de contexto" .
¿Cuál es la diferencia entre el modo de usuario y el modo kernel?
La principal diferencia entre el modo de usuario y el modo kernel es el nivel de privilegios que proporciona cada modo. En el modo de usuario, las aplicaciones tienen menos privilegios. No tienen acceso directo a los recursos de hardware y no pueden escribir en el espacio de direcciones de otras aplicaciones.
El código que se ejecuta en modo kernel tiene privilegios elevados. No sólo tiene acceso directo al hardware de la computadora, sino que todos los programas que se ejecutan en modo kernel, incluido el sistema operativo, también comparten un espacio de direcciones. Entonces, si un programa en modo kernel falla, puede causar que todo el sistema operativo falle. Para garantizar que estos problemas no ocurran, Windows solo permite que algunos procesos se ejecuten en modo kernel.
Windows adopta un enfoque en capas para separar los programas de usuario de los recursos del sistema
Windows utiliza un modelo en capas para determinar los niveles de privilegios de los procesos. Las aplicaciones ubicadas en la capa más externa son las aplicaciones que tienen privilegios de alquiler. El núcleo de estas capas es el núcleo. Por tanto, el kernel tiene acceso ilimitado a los recursos del sistema operativo.
El enfoque en capas también protege la funcionalidad crítica del sistema operativo. Cuando los programas de la capa superior fallan aleatoriamente, no afecta al sistema operativo. Por otro lado, cuando el kernel falla, todo el sistema operativo se ve afectado.