¿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 esto, será fácil comprender la diferencia entre el modo de usuario y el modo kernel.

Comprender lo que hace un sistema operativo

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

El elemento más esencial de una computadora 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 un UPC, los transistores microscópicos representan unos y ceros ya sea estando encendidos o apagados. Esos transistores están dispuestos en estructuras lógicas, llamadas puertas lógicas.

En la memoria electrónica de las computadoras, los bits están representados por celdas de memoria que tienen una carga por encima o por debajo de un 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 terrenos 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 puedes 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 amigable para los humanos de una computadora a los procesos sin procesar y de bajo nivel en la propia computadora? Ahí es donde entra en juego 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 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 utilizarlos en todo su potencial, ya que depende de estándares genéricos de la industria informática..

Aquí entran en juego los controladores de hardware. Los controladores le indican a su sistema operativo cómo trabajar con componentes específicos, por lo que necesita controladores diferentes para las GPU Nvidia y AMD, por ejemplo.

Equipado con los controladores adecuados, el kernel es la máxima autoridad dentro de la computadora, incluidas las acciones que pueden destruir datos catastróficamente.

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

En la época 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 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 en día, las cosas funcionan de manera muy diferente gracias a las API.

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 sólo deben asegurarse de que sus productos cumplan con DirectX para garantizar la compatibilidad total con cualquier software que también cumpla con las normas.

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 conlleva una ligera penalización en el 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 versus modo kernel

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

Cuando inicias 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 la RAM y solicitar recursos. No hay acceso directo a la memoria ni a 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 prohibidas para los procesos en modo de 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 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 son aplicados a nivel de hardware por la propia CPU. Si una aplicación que se ejecuta en modo de 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 cerrá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 ha experimentado una pantalla azul de la muerte (¿quién no?) que obligó a su computadora a apagarse o reiniciarse, es muy probable que el culpable fuera un proceso en modo kernel.

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

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

Esta es la razón por la que el modo kernel generalmente solo se otorga a procesos del sistema de bajo nivel que necesitan acceder directamente al hardware de la computadora. Normalmente, este privilegio se extiende a un proceso porque necesita más rendimiento del 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 ser elevado.

Si tienes problemas con la Pantalla Azul de la Muerte, ¡asegúrate de leer nuestros Guía de solución de problemas de la pantalla azul de la muerte para Windows 10!.

.

Artículos Relacionados:


31.12.2021