Las próximas lecciones cubren conceptos más teóricos. Si prefiere la práctica directa, siéntase libre de saltar y volver a estos temas más tarde.
Un aspecto fundamental de la arquitectura de Linux es la separación entre el espacio de usuario y el kernel. Pero, ¿por qué no podemos combinar sus poderes en una sola capa? La razón es la seguridad y la estabilidad, lo que se logra haciendo que operen en diferentes modos.
¿Cuál es la Diferencia entre el Modo Kernel y el Modo Usuario
El sistema opera en dos modos distintos: modo kernel y modo usuario. Esta separación es crucial para proteger el hardware y los recursos del sistema del acceso directo y no controlado por las aplicaciones.
En modo kernel, el kernel tiene acceso completo y sin restricciones al hardware; lo controla todo. Este es el nivel de privilegio más alto.
En modo usuario, las aplicaciones tienen un acceso muy limitado a una porción pequeña y segura de la memoria y los recursos de la CPU.
Cuando una aplicación de usuario necesita realizar una acción que involucre hardware, como leer desde un disco, enviar datos a través de la red o acceder a un periférico, no puede hacerlo directamente. Estas operaciones deben ser manejadas por el kernel en modo kernel. Este diseño evita que un programa defectuoso o malicioso comprometa todo el sistema. Por ejemplo, no querría que el software espía tuviera acceso directo al hardware, ya que podría leer todos sus datos o controlar su cámara web.
Anillos de Protección y Acceso Privilegiado
Estos diferentes modos a menudo se describen como niveles de privilegio o anillos de protección. Imagine una fortaleza con muros concéntricos: el área más interna es la más segura y tiene la mayor autoridad. Los anillos de protección en una computadora funcionan de manera similar, con el anillo más interno correspondiente al nivel de privilegio más alto.
En una arquitectura de computadora x86 estándar, hay dos niveles principales:
- Anillo 0: Aquí es donde se ejecuta el kernel. Tiene el nivel más alto de privilegios de kernel, puede ejecutar cualquier instrucción del sistema y se le da total confianza para administrar el hardware. Este es el núcleo del acceso privilegiado.
- Anillo 3: Este es el nivel donde se ejecutan las aplicaciones en modo usuario. Es el anillo con menos privilegios y no tiene acceso directo al hardware.
Este modelo de seguridad basado en anillos asegura que las aplicaciones de usuario estén aisladas de los componentes críticos del sistema. Pero si las aplicaciones siempre están en un modo diferente al del kernel, ¿cómo pueden realizar las operaciones de hardware necesarias?
Llamadas al Sistema y Privilegios del Kernel
El puente entre el modo usuario y el modo kernel es la llamada al sistema. Cuando una aplicación de usuario necesita realizar una tarea privilegiada, realiza una llamada al sistema para solicitar que el kernel realice la acción en su nombre.
Este proceso permite que la aplicación transicione temporal y seguramente del modo usuario al modo kernel para ejecutar una instrucción específica y controlada. Una vez que la tarea se completa, el sistema vuelve al modo usuario. Este mecanismo asegura que las aplicaciones puedan obtener los servicios que necesitan sin obtener un acceso privilegiado directo y peligroso al hardware.