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

Es posible que haya oído hablar de aplicaciones que se ejecutan en modo "kernel" o "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.

Comprender lo que hace un sistema operativo(Does)

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.

El elemento más esencial de una computadora es el bit o "dígito binario". “Todo lo(” Everything) que hace una computadora se representa como unos y ceros. Los diferentes(Different) 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.

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.

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 núcleo.

¿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(GPUs) 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.

Los controladores de hardware entran en juego aquí. Los controladores le dicen a su sistema operativo cómo trabajar con componentes específicos, por lo que necesita diferentes controladores para las GPU Nvidia y AMD(AMD GPUs) , 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(Role) de las interfaces de programación(Application Programming Interfaces) de aplicaciones ( API(APIs) )

En los días de MS-DOS , los desarrolladores de software tenían 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 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 en día, las cosas funcionan de manera muy diferente, gracias a las API(APIs) .

Microsoft DirectX es un gran ejemplo. Si desea una explicación detallada, consulte ¿Qué es DirectX y por qué es importante? (What Is DirectX and Why Is It Important?)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(APIs) 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álculo.

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 usa 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.

Esto es bueno por muchas razones, pero el beneficio más importante es que la aplicación no puede sobrescribir ni 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

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 "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(Dangers) del modo kernel(Kernel Mode) : la pantalla azul(Blue Screen) de la muerte(Death)

Si alguna vez ha experimentado una pantalla azul(Blue Screen) de la muerte(Death) (¿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.

Esta es un área donde las API(APIs) juegan un papel esencial, ya que es la API la que solicita privilegios de modo kernel. Las aplicaciones en modo 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(CPU) solo funcionan en modo kernel, por lo que si un proceso necesita usar esas funciones, debe elevarse.

Si tiene problemas con la pantalla azul(Blue Screen) de la muerte(Death) , asegúrese de leer nuestra Guía de solución de problemas de la pantalla azul de la muerte para Windows 10(Blue Screen of Death Troubleshooting Guide for Windows 10) .



About the author

Soy ingeniero de software con más de 10 años de experiencia en el campo de la ingeniería de Windows. Me especializo en el desarrollo de aplicaciones basadas en Windows, así como en hardware y controladores de sonido para el sistema operativo Windows de próxima generación de Microsoft, Windows 11. Mi experiencia en la creación de aplicaciones de Windows me convierte en un activo especialmente valioso para cualquier empresa que busque desarrollar productos tecnológicos innovadores.



Related posts