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 de kernel.
Comprender lo que hace un sistema operativo
Una computadora consta de hardware, componentes electrónicos y software, el código de computadora ejecutado por ese hardware. Pero lo que puede estar menos claro es cómo funcionan juntos.
Tabla de contenido
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 una CPU, los transistores microscópicos representan unos y ceros estando encendidos o apagados. Esos transistores están organizados 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 un cierto umbral. En un disco duro mecánico, los bits se representan como fluctuaciones magnéticas medidas en un plato giratorio. En 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 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 amigable para los humanos de una computadora a la-niveles de procesos 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) quieren en las instrucciones del código de máquina que la CPU y otros componentes entienden. La pieza de software más importante en este proceso es el kernel.
¿Qué es el kernel?
El kernel es, como sugiere el nombre, 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 kernel 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 en todo su potencial. , basándose en estándares genéricos de la industria informática.
Aquí entran en juego los controladores de hardware. Los controladores le dicen a su sistema operativo cómo trabajar con componentes específicos, por lo que necesita diferentes controladores para las GPU de Nvidia y AMD, por ejemplo.
Equipado con los controladores adecuados, el kernel es la máxima autoridad dentro de la computadora , incluido hacer cosas que pueden destruir datos catastróficamente.
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 del usuario. El ejemplo más notorio de esto en los sistemas MS-DOS fueron los controladores de la tarjeta de sonido.
Un videojuego determinado tendría que admitir las tarjetas más populares (Sound Blaster, Ad-lib, Gravis Ultrasound, etc.) y esperar que la mayoría de los jugadores estén cubiertos. Hoy en día, 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 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 total compatibilidad 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 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 frente a modo de kernel
Los sistemas operativos modernos ejecutan cientos o miles de”procesos”simultáneamente, dándoles dinámicamente el 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 el 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 de direcciones de memoria virtual privada y a su tabla de control. 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.
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 del alcance 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 al sistema. recursos, incluso los 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 encargará de la aplicación, generalmente cerrándola y generando un registro de fallas para que los desarrolladores puedan ver lo que 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 haya sido en modo kernel. El proceso tiene la culpa.
Cuando un proceso en modo kernel hace algo que no se supone que debe hacer, el sistema operativo no puede recuperarse y toda la computadora se detiene. Cuando un proceso en 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 en la que las API juegan un papel esencial, ya que es la API que solicita privilegios de modo kernel. Las aplicaciones en modo de usuario esencialmente delegan solicitudes que habrían requerido privilegios en modo kernel a la API.
Esta es la razón por la que el modo kernel generalmente solo se otorga a procesos de 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 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 tiene problemas con la pantalla azul de la muerte, asegúrese de leer nuestra ¡Guía de resolución de problemas de la pantalla azul de la muerte para Windows 10!