¿Qué es el kernel en Linux?

¿Qué es el kernel en Linux?

Compartir y resumir con IA (¡Elige tu favorita!):
Haz click en los botones de abajo para obtener un resumen del post. Fórmate con Raiola ¡En un futuro habrá más!

El kernel es el núcleo del sistema operativo Linux, la pieza central que hace de intermediario entre el hardware (la CPU, la RAM, los discos, la red) y el software (los programas que ejecutas).

Cuando alguien dice «Linux», técnicamente se está refiriendo al kernel.

Lo que tú instalas y usas a diario (AlmaLinux, Debian, Ubuntu) son distribuciones: el kernel Linux más todo el resto de piezas que se montan encima para que el sistema sea usable.

El kernel es la capa que está siempre por debajo, gestionando los recursos del equipo para que tus programas no tengan que hablar directamente con cada componente físico.
El símil más sencillo es el de un director de orquesta: cada músico (cada programa) toca lo suyo, pero hay alguien en el centro coordinando para que no toquen todos a la vez sobre el mismo recurso.

Tú abres un navegador, el navegador pide memoria y acceso a la red, y el kernel se encarga de repartir eso de forma ordenada.

Esto te importa especialmente cuando administras un servidor Linux, que es el terreno donde el kernel deja de ser un concepto abstracto y empieza a verse en cosas muy concretas: el usuario root, los parámetros de memoria o la versión que corre tu máquina.

En este artículo te contamos qué es el kernel de Linux, cómo funciona, por qué se dice que es monolítico, cómo comprobar su versión, qué implica actualizarlo y algunas cosas más.

¿Cómo funciona el kernel de Linux por dentro?

Como ya comentamos anteriormente, el kernel actúa como intermediario entre los programas y el hardware: gestiona la memoria RAM, los procesos, los dispositivos y los permisos para que todo el sistema funcione de forma coordinada.
Ningún programa toca el hardware por su cuenta; todo pasa por el kernel, que reparte y monitoriza.

Cuando abres un programa, el kernel crea un proceso y le asigna un trozo de tiempo de CPU y un espacio de memoria.
Si abres diez programas a la vez, el kernel hace de árbitro y va dando turnos de procesador a cada uno tan rápido que tú percibes que todo funciona en paralelo.

Con la memoria RAM hace algo parecido: lleva la cuenta de qué memoria está ocupada, cuál está libre y a quién se la entrega, evitando que un proceso pise la memoria de otro.

Y cuando un programa necesita leer o escribir en el disco, tampoco habla directamente con el disco: se lo pide al kernel, que es quien sabe traducir esa petición al hardware de almacenamiento que tengas montado.

La forma más fácil de verlo es como un portero que controla el acceso a todos los recursos de la máquina.

Los programas y aplicaciones hacen cola con sus peticiones y el kernel decide a quién atiende, cuánto le da y en qué orden.
Ese reparto coordinado es justo lo que evita que tu sistema se convierta en un descontrol cuando hay decenas de procesos y aplicaciones pidiendo recursos a la vez.

Qué tareas gestiona el kernel: memoria, procesos y permisos

Las responsabilidades del kernel se ven mucho mejor cuando las aterrizas en ejemplos reales que cualquiera que administra un servidor acaba tocando.

Estas son las grandes áreas de las que se ocupa el núcleo del sistema operativo:

  • Gestión de procesos: Crea, ejecuta y mata procesos, repartiendo el tiempo de CPU entre ellos. Aquí entra un detalle importante de permisos: el kernel trata de forma especial a los procesos que se ejecutan con UID 0, es decir, los del usuario root, saltándose las comprobaciones que sí aplica al resto.

  • Gestión de memoria RAM y SWAP: Decide qué proceso recibe memoria y cuándo usar SWAP. Un parámetro del propio kernel, vm.swappiness, controla precisamente cómo de agresivo es el sistema usando SWAP en lugar de RAM.

  • Gestión de dispositivos y hardware: Habla con discos duros, tarjetas de red y demás componentes a través de los drivers, ofreciendo una capa común a los programas. La VFS (Virtual File System) es una capa del kernel que gestiona el acceso a los sistemas de archivos y cachea en RAM, y un parámetro como vm.vfs_cache_pressure ajusta cuánta de esa caché se conserva.

  • Gestión de permisos: Vigila qué puede hacer cada usuario y cada proceso sobre los archivos y los recursos del sistema, aplicando la jerarquía de propietarios y permisos de Unix.

El detalle del UID 0 es clave: por mucho que renombres usuarios o crees otros con privilegios, el que manda dentro del sistema es siempre el que tiene ese identificador, porque el kernel le da paso libre.

Es el motivo de fondo por el que root puede hacer cualquier cosa en una máquina Linux, un tema que conviene desarrollar en detalle al estudiar qué es ROOT en Linux.

Por qué se dice que el kernel de Linux es monolítico

Que el kernel de Linux sea monolítico significa que integra dentro de sí mismo la gestión de procesos, la memoria, los dispositivos y el sistema de archivos, en lugar de repartir esas tareas en piezas separadas que se comunican entre ellas. Todo ese trabajo vive en un mismo bloque que se ejecuta muy cerca del hardware.

La ventaja del enfoque monolítico es el rendimiento: al estar todo dentro del mismo núcleo, las operaciones internas son rápidas porque no hay que ir saltando entre piezas separadas.
El coste teórico es que un fallo grave en una parte afecta a todo el conjunto, pero a cambio ganas eficiencia y rendimiento.

Que el kernel de Linux sea monolítico no significa que sea rígido: gracias a los módulos del kernel puedes cargar drivers y funcionalidades sin recompilarlo entero ni reiniciar a lo loco.

Realmente es el matiz más importante: monolítico no quiere decir cerrado ni inflexible.

El kernel de Linux soporta módulos, que son piezas que puedes cargar y descargar en caliente para añadir funcionalidades como drivers de un dispositivo nuevo, sin tener que reconstruir el kernel completo.

Tienes lo mejor de los dos mundos: el rendimiento de un núcleo compacto y la flexibilidad de ir sumando capacidades según las necesites.

¿Cómo compruebas la versión del kernel en Linux?

Puedes comprobar la versión del kernel ejecutando el comando uname -r en la terminal de tu Linux, que te devuelve la versión exacta del kernel que está corriendo en el sistema.

Es directo, no necesitas permisos especiales y funciona igual en AlmaLinux, Debian o Ubuntu.

uname -r

Si quieres más contexto que solo el número de versión, tienes uname -a, que te muestra información ampliada: el nombre del kernel, la versión, la arquitectura del sistema y algún dato más sobre la compilación.

uname -a

Es el comando al que tirar cuando estás depurando algo y necesitas el cuadro completo de un vistazo.

Actualizar el kernel de Linux: qué tener en cuenta

Actualizar el kernel de Linux se hace con el gestor de paquetes de tu distribución, igual que actualizas el resto del sistema.

En distribuciones tipo Debian o Ubuntu usas de apt, y en las basadas en RHEL como AlmaLinux usas dnf. El kernel entra dentro de esas actualizaciones generales del sistema.

La diferencia con actualizar cualquier otro paquete es importante: el kernel en ejecución no se puede sustituir en caliente. Para empezar a usar el nuevo, normalmente tienes que reiniciar el servidor.

Mientras no reinicies, el sistema sigue utilizando el kernel antiguo aunque el nuevo ya esté instalado en disco.

El kernel en un servidor VPS: por qué importa

En un servidor VPS, el kernel deja de ser algo abstracto y se vuelve una característica concreta de tu producto.

La pregunta clave es si tu VPS tiene su propio kernel o lo comparte con el resto de máquinas del nodo, y ahí es donde el tipo de virtualización lo cambia todo.

En virtualización KVM, que es la que usamos en nuestros servidores VPS Cloud, cada VPS tiene su propio kernel independiente. Eso es muy distinto de otros tipos de virtualización (como OpenVZ) donde todas las máquinas comparten un único kernel del nodo.

Tener tu kernel propio te da compatibilidad (puedes hacer funcionar todo lo que necesites sin depender del kernel del nodo), estabilidad (un problema en otra máquina no arrastra a la tuya) e independencia total a la hora de actualizar, configurar y reiniciar.

En virtualización KVM cada VPS tiene su propio kernel independiente, y eso es justo lo que le da a tu servidor compatibilidad, estabilidad e independencia del resto de máquinas del nodo.

Nuestros servidores VPS Cloud con virtualización KVM te dan acceso root total y te dejan elegir la distribución que prefieras: AlmaLinux 8 o 9, Debian 11 o 12 y Ubuntu 22.04 o 24.04.

Álvaro Fontela

Álvaro Fontela

Consultor WordPress, además de CEO y cofundador de Raiola Networks. Autor del libro "Curso Práctico de WordPress" y speaker en congresos de marketing digital.

Autor

Raiola Game

Elige una caja. Llévate el premio

9 cajas con productos y servicios de Raiola Networks. Eliges una y el premio que esconda será tuyo: hosting gratuito, descuentos en VPS, entradas al RMC26...

Jugar ahora
Participa y llevate hosting gratuito, descuentos en VPS, entradas para RMC26...