¿Qué es el núcleo de Linux?
El kernel de Linux® es el componente principal de un sistema operativo (SO) Linux y es la interfaz principal entre el hardware de un ordenador y sus procesos. Se comunica entre ambos, gestionando los recursos de la forma más eficiente posible.
El núcleo se llama así porque -como una semilla dentro de una cáscara dura- existe dentro del SO y controla todas las funciones principales del hardware, ya sea un teléfono, un portátil, un servidor o cualquier otro tipo de ordenador.
Qué hace el núcleo
El núcleo tiene 4 trabajos:
- Gestión de la memoria: Llevar la cuenta de cuánta memoria se utiliza para almacenar qué, y dónde
- Gestión de procesos: Determinar qué procesos pueden utilizar la unidad central de procesamiento (CPU), cuándo y durante cuánto tiempo
- Controladores de dispositivos: Actúan como mediadores/interpretadores entre el hardware y los procesos
- Llamadas al sistema y seguridad: Reciben peticiones de servicio de los procesos
- El hardware: La máquina física-el fondo o la base del sistema, formada por la memoria (RAM) y el procesador o unidad central de procesamiento (CPU), así como los dispositivos de entrada/salida (E/S) como el almacenamiento, la red y los gráficos. La CPU realiza cálculos y lee y escribe en la memoria.
- El núcleo de Linux: El núcleo del sistema operativo. (¿Ves? Está justo en el medio.) Es un software que reside en la memoria y que le dice a la CPU qué hacer.
- Procesos de usuario: Son los programas en ejecución que gestiona el kernel. Los procesos de usuario son los que conforman colectivamente el espacio de usuario. Los procesos de usuario también se conocen como procesos justos. El kernel también permite que estos procesos y servidores se comuniquen entre sí (lo que se conoce como comunicación entre procesos, o IPC).
El núcleo, si se implementa correctamente, es invisible para el usuario, trabajando en su propio pequeño mundo conocido como espacio del núcleo, donde asigna la memoria y lleva la cuenta de dónde se almacena todo. Lo que el usuario ve -como los navegadores web y los archivos- se conoce como espacio del usuario. Estas aplicaciones interactúan con el kernel a través de una interfaz de llamada al sistema (SCI).
Piénsalo así. El kernel es un ocupado asistente personal de un poderoso ejecutivo (el hardware). El trabajo del asistente consiste en transmitir mensajes y peticiones (procesos) de los empleados y el público (usuarios) al ejecutivo, recordar qué está almacenado dónde (memoria) y determinar quién tiene acceso al ejecutivo en un momento dado y durante cuánto tiempo.
Dónde encaja el kernel dentro del SO
Para poner el kernel en contexto, puede pensar que una máquina Linux tiene 3 capas:
El código ejecutado por el sistema se ejecuta en las CPU en 1 de los 2 modos: modo kernel o modo usuario. El código que se ejecuta en el modo kernel tiene acceso sin restricciones al hardware, mientras que el modo usuario restringe el acceso a la CPU y a la memoria al SCI. Existe una separación similar para la memoria (espacio del núcleo y espacio del usuario). Estos 2 pequeños detalles forman la base de algunas operaciones complicadas como la separación de privilegios para la seguridad, la construcción de contenedores y las máquinas virtuales.
Esto también significa que si un proceso falla en modo usuario, el daño es limitado y puede ser recuperado por el núcleo. Sin embargo, debido a su acceso a la memoria y al procesador, la caída de un proceso del kernel puede colapsar todo el sistema. Dado que existen salvaguardas y permisos necesarios para cruzar los límites, las caídas de procesos de usuario no suelen causar demasiados problemas.
¿Por qué elegir Red Hat?
En Red Hat, Linux es la base de todo lo que hacemos. Red Hat es el segundo mayor contribuyente corporativo al kernel de Linux, aportando la experiencia y los conocimientos de 25 años y una gran comunidad de socios, clientes y expertos de toda la industria. Se trata de una larga relación, con una historia y un nivel de experiencia difíciles de conseguir.