¿Cuál es el modo de usuario vs modo kernel en Windows?

¿Cuál es el modo de usuario vs modo kernel en Windows?

Es posible que haya escuchado sobre aplicaciones que se ejecutan en el modo "kernel" o "usuario". Todo se debe a cómo funcionan los sistemas operativos cuando hacen su trabajo. Una vez que comprende eso, es fácil comprender la diferencia entre el modo de usuario y el modo kernel.

En la memoria electrónica de la computadora, los bits están representados por las celdas de memoria, ya sea que tienen una carga por encima o por debajo de cierto umbral. En un disco duro mecánico, los bits se representan como fluctuaciones magnéticas medidas en una fuente de hilado. En discos ópticos, pozos y tierras que reflejan o no la luz láser hace el mismo trabajo.

No importa cómo se logre la representación física del código binario, eventualmente puede reducir todos los componentes de la computadora de consumo a este código de máquina sin procesar.

Entonces, ¿cómo se pasa de la interfaz humana de una computadora a los procesos crudos y de bajo nivel en la propia computadora?? Ahí es donde entra el sistema operativo. Controla directamente el hardware de la computadora.

Este software traduce todo lo que las aplicaciones (y, por lo tanto, el usuario) desea en las instrucciones del código de la máquina que la CPU y otros componentes comprenden. La pieza de software más crítica en este proceso es el kernel.

¿Qué es el núcleo??

El núcleo es, como su nombre indica, el núcleo del sistema operativo. El kernel es software que reside en RAM y dirige todo lo que hace la computadora. Cuando algo se escribe en la memoria, es el núcleo el que dirige la ejecución.

El kernel sabe cómo interactuar con hardware como GPU y tarjetas de red, pero es posible que no sepa cómo operarlos a su máximo potencial, dependiendo de los estándares genéricos en la industria de las computadoras.

Los controladores de hardware entran en juego aquí. Los controladores dicen a su sistema operativo cómo trabajar con componentes específicos, por lo que necesita diferentes controladores para NVIDIA y AMD GPU, por ejemplo.

Equipado con los controladores adecuados, el núcleo es la autoridad final dentro de la computadora, incluida hacer cosas que pueden destruir catastróficamente los datos.

El papel de las interfaces de programación de aplicaciones (API)

En los días de MS-DOS, los desarrolladores de software tuvieron que escribir su software específicamente para el hardware del usuario. El ejemplo más notorio de esto en los sistemas MS-DOS fueron los controladores de tarjetas de sonido.

Un videojuego dado tendría que admitir las cartas más populares (Sound Blaster, AD-LIB, Gravis Ultrasonido, etc.) y espero que la mayoría de los jugadores estuvieran cubiertos. Hoy, las cosas funcionan de manera muy diferente, gracias a las API.

La pantalla de selección de la tarjeta de sonido de Wolf3d

Microsoft DirectX es un gran ejemplo. Si desea una explicación en profundidad, consulte qué es DirectX y por qué es importante? Sin embargo, lo más importante que debe saber es que la API ofrece una forma estándar para que los desarrolladores de software soliciten recursos de hardware de componentes como la GPU. Además, los fabricantes de hardware solo deben asegurarse de que sus productos cumplan con DirectX para garantizar una compatibilidad completa con cualquier software igualmente compatible.

Las API ofrecen una capa de traducción entre aplicaciones de software y el núcleo de bajo nivel con sus controladores de hardware. Sí, esto viene con una ligera penalización de rendimiento. Aún así, en las computadoras modernas, esto es insignificante, y viene con una variedad de ventajas, que es donde finalmente llegamos al modo de usuario y al modo de kernel.

Modo de usuario VS. Modo de núcleo

Los sistemas operativos modernos ejecutan cientos o miles de "procesos" simultáneamente, dándoles dinámicamente tiempo de CPU según sea necesario en función de sus prioridades y requisitos de potencia de cálculo.

Cuando inicia una aplicación, genera procesos y la CPU puede ejecutarlos en modo de usuario o en modo kernel.

Un proceso de Windows que se ejecuta en modo de usuario solo tiene acceso a su propio espacio privado de dirección de memoria virtual y tabla de identificación. El software utiliza estas tablas para almacenar datos en RAM y solicitar recursos. No hay acceso directo a la memoria u otro hardware, y depende del sistema operativo mapear esos espacios virtuales al hardware real de la computadora.

Esto es bueno por muchas razones, pero el beneficio más crucial es que la aplicación no puede sobrescribir o alterar datos fuera de su espacio de dirección de memoria virtual. Además, ciertas funciones están fuera de los límites a los procesos en modo de usuario, principalmente las que podrían bloquear el sistema o destruir datos.

Cuando un proceso se lanza o está elevado al modo de núcleo, tiene acceso completo a los recursos del sistema, incluso aquellos reservados para el sistema operativo. Entonces, en teoría, podría sobrescribir datos cruciales que el sistema operativo necesita ejecutar correctamente.

Trampas y excepciones

Es importante entender que estos dos modos se aplican a nivel de hardware por la propia CPU. Si una aplicación que se ejecuta en modo de usuario intenta hacer algo que requiera acceso al modo de kernel, genera una "trampa" o "excepción."El sistema operativo se ocupará de la aplicación, generalmente cerrándola y generando un registro de bloqueo para que los desarrolladores puedan ver lo que sucedió en la memoria cuando las cosas salieron de los rieles.

Los peligros del modo núcleo: la pantalla azul de la muerte

Si alguna vez has experimentado una pantalla azul de muerte (que no?) que obligó a su computadora a apagar o reiniciar, existe una buena posibilidad de que sea un proceso de modo de núcleo.

Cuando un proceso en modo kernel hace algo que no debe debe, el sistema operativo no puede recuperarse de él, y toda la computadora se detiene. Cuando un proceso en modo de usuario se vuelve loco, solo la aplicación se bloquea y el resto del software y el sistema operativo pueden continuar sin ningún problema.

Esta es una área donde las API juegan un papel esencial, ya que es la API que pide privilegios de modo de núcleo. Las aplicaciones en modo de usuario esencialmente delegan solicitudes que habrían requerido privilegios de modo de kernel a la API.

Es por eso que el modo de núcleo generalmente solo se otorga a procesos de sistema de bajo nivel que necesitan acceder al hardware de la computadora directamente. Por lo general, este privilegio se extiende a un proceso porque necesita más rendimiento de lo que el modo de usuario puede proporcionar. Algunas instrucciones de CPU solo funcionan en modo núcleo, por lo que si un proceso necesita usar esas funciones, debe ser elevado.

Si tiene problemas con la pantalla azul de la muerte, asegúrese de leer nuestra guía de solución de problemas de la pantalla azul de la muerte para Windows 10!