¿Qué es el modo de usuario vs modo kernel en Windows? - 3 - noviembre 30, 2022

¿Qué es el modo de usuario vs modo kernel en Windows?

Es posible que haya oído hablar de aplicaciones que se ejecutan en modo kernel o de usuario. Todo depende de cómo funcionan los sistemas operativos cuando hacen su trabajo. Una vez que comprenda eso, es fácil comprender la diferencia entre el modo de usuario y el modo kernel.

¿Qué es el modo de usuario vs modo kernel en Windows? - 5 - noviembre 30, 2022

Comprender lo que hace un sistema operativo

Una computadora consta de hardware, los componentes electrónicos y el software, el código de computadora ejecutado por ese hardware. Pero lo que puede estar menos claro es cómo trabajan juntos.

Un elemento más esencial de las computadoras es el bit o dígito binario. Todo lo que hace una computadora se representa como unos y ceros. Los diferentes componentes de la computadora representan bits de diferentes maneras. En una CPU, los transistores microscópicos representan unos y ceros estando encendidos o apagados. Esos transistores están dispuestos en estructuras lógicas, llamadas puertas lógicas.

¿Qué es el modo de usuario vs modo kernel en Windows? - 7 - noviembre 30, 2022

En la memoria de una computadora electrónica, los bits están representados por celdas de memoria 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 un plato giratorio. En los discos ópticos, los hoyos y las tierras que reflejan o no la luz láser hacen 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 del consumidor a este código de máquina sin procesar.

¿Qué es el modo de usuario vs modo kernel en Windows? - 9 - noviembre 30, 2022

Entonces, ¿cómo se pasa de la interfaz humana de una computadora a los procesos sin procesar de bajo nivel en la computadora misma? 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) desean en instrucciones de código de máquina que la CPU y otros componentes entienden. La pieza de software más crítica en este proceso es el kernel.

¿Qué es el núcleo?

El kernel es, como su nombre indica, el núcleo del sistema operativo. El kernel es un software que reside en la 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 núcleo sabe cómo interactuar con hardware como GPU y tarjetas de red, pero es posible que no sepa cómo operarlas en todo su potencial, confiando en los estándares genéricos de la industria informática.

¿Qué es el modo de usuario vs modo kernel en Windows? - 11 - noviembre 30, 2022

Los controladores de hardware entran en juego aquí. Los controladores le dicen a su sistema operativo cómo trabajar con componentes específicos, razón por la cual necesita diferentes controladores para GPU Nvidia y AMD, por ejemplo.

Equipado con los controladores correctos, el kernel es la máxima autoridad dentro de la computadora, lo que incluye hacer cosas que pueden destruir datos de manera catastrófica.

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

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

¿Qué es el modo de usuario vs modo kernel en Windows? - 13 - noviembre 30, 2022

Un videojuego determinado tendría que ser compatible con las tarjetas más populares (Sound Blaster, Ad-lib, Gravis Ultrasound, etc.) y esperar que la mayoría de los jugadores estuvieran cubiertos. Hoy, las cosas funcionan de manera muy diferente, gracias a las API.

¿Qué es el modo de usuario vs modo kernel en Windows? - 15 - noviembre 30, 2022

Microsoft DirectX es un gran ejemplo. Si desea una explicación detallada, 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 la compatibilidad total con cualquier software compatible.

Las API ofrecen una capa de traducción entre las aplicaciones de software y el kernel 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 kernel.

Modo de usuario frente a modo kernel

Los sistemas operativos modernos ejecutan cientos o miles de procesos simultáneamente, lo que les proporciona dinámicamente tiempo de CPU según sea necesario en función de sus prioridades y requisitos de potencia de cómputo.

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

Un proceso de Windows que se ejecuta en modo de usuario solo tiene acceso a su propio espacio de direcciones de memoria virtual privada y a su tabla de identificadores. 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 asignar esos espacios virtuales al hardware real de la computadora.

¿Qué es el modo de usuario vs modo kernel en Windows? - 17 - noviembre 30, 2022

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

Cuando un proceso se inicia o se eleva al modo kernel, tiene acceso completo a los recursos del sistema, incluso a aquellos reservados para el sistema operativo. Entonces, en teoría, podría sobrescribir datos cruciales que el sistema operativo necesita para funcionar correctamente.

Trampas y excepciones

¿Qué es el modo de usuario vs modo kernel en Windows? - 19 - noviembre 30, 2022

Es importante comprender que estos dos modos se imponen a nivel de hardware por la propia CPU. Si una aplicación que se ejecuta en modo usuario intenta hacer algo que requiere acceso en modo kernel, genera una trampa o una excepción. Luego, el sistema operativo se ocupará de la aplicación, generalmente apagándola y generando un registro de fallas para que los desarrolladores puedan ver qué sucedió en la memoria cuando las cosas se descarrilaron.

Los peligros del modo kernel: la pantalla azul de la muerte

Si alguna vez experimentó una pantalla azul de la muerte (¿quién no?) que obligó a su computadora a apagarse o reiniciarse, es muy probable que la culpa sea un proceso en modo kernel.

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

¿Qué es el modo de usuario vs modo kernel en Windows? - 21 - noviembre 30, 2022

Esta es un área donde las API juegan un papel esencial ya que es la API que solicita privilegios de modo kernel. Las aplicaciones de modo de usuario esencialmente delegan solicitudes que habrían requerido privilegios de modo kernel a la API.

Esta es la razón por la cual el modo kernel generalmente solo se otorga a los procesos del sistema de bajo nivel que necesitan acceder directamente al hardware de la computadora. Por lo general, este privilegio se extiende a un proceso porque necesita más rendimiento que el que puede proporcionar el modo de usuario. Algunas instrucciones de la CPU solo funcionan en modo kernel, por lo que si un proceso necesita usar esas funciones, debe elevarse.