El Kernel de GNU/Linux

Este esta entrada veremos lo esencial del Kernel de GNU/Linux

¿Qué es el kernel?

El kernel es el núcleo del sistema operativo: el componente software que actúa como intermediario entre el hardware (CPU, memoria, dispositivos) y las aplicaciones de usuario.

Su función principal es gestionar recursos (procesador, memoria, almacenamiento, red, etc.) y garantizar que cada proceso los use de manera segura y eficiente

Historia breve y propósito

  • Creado por Linus Torvalds en 1991, inspirado en el sistema Minix, de la familia UNIX
  • Su filosofía se basa en el software libre y el código abierto, permitiendo que miles de desarrolladores de todo el mundo contribuyan, tiene una licencia GPL versión 2 exclusivamente, por lo que, obliga a que cualquiera que lo modifique y luego lo use de manera pública, tenga que publicar los cambios sobre el código.
  • Actualmente es el más usado en servidores, ordenadores personales, móviles (Android), dispositivos IoT y supercomputadoras
  • El tipo de kernel sería monolítico, por lo que todo el sistema (drivers, gestión de procesos, memoria, etc.) se ejecuta en el mismo espacio de memoria del kernel
  • Aún siendo de tipo monolítico dispone de la posibilidad de cargar módulos de funcionalidad, mayormente drivers, mientras que se está ejecutando.

Componentes principales

  • Gestión de procesos (Process Scheduler): Controla la ejecución de programas (procesos e hilos) y decide qué proceso usa la CPU en cada momento.
  • Gestión de memoria (Memory Manager): Asigna y libera memoria a los procesos y usa técnicas como paginación y memoria virtual.
  • Gestión de archivos (VFS – Virtual File System): Proporciona una interfaz común para diferentes sistemas de archivos (ext4, XFS, btrfs, etc.).
  • Gestión de dispositivos (Device Drivers): Controla la comunicación entre el kernel y el hardware (tarjetas de red, discos, GPU…) y en GNU/Linux, los controladores suelen ser módulos del kernel.
  • Gestión del sistema (System Calls): Conjunto de llamadas que las aplicaciones usan para interactuar con el kernel (por ejemplo, read(), write(), fork())

Carga de aplicaciones

Para que seamos conscientes de cómo se realiza el proceso de la carga del sistema veremos un listado con los pasos que realiza el ordenador para arrancar el sistema:

  • BIOS/UEFI: inicializa el hardware
  • BIOS/UEFI: Elige el dispositivo de arranque
  • Cargador de arranque (GRUB): desde el dispo duro, carga el kernel en memoria
  • Kernel: detecta hardware, monta el sistema de archivos raíz y ejecuta el primer proceso (init o systemd)
  • Sistema de usuario: se inician servicios y la sesión del usuario

Desarrollo y mantenimiento

  • El kernel se mantiene en kernel.org, y su desarrollo sigue ciclos regulares
  • Miles de desarrolladores contribuyen a través de un sistema de revisión pública
  • Las versiones se organizan en ramas:
    • Mainline: versión principal mantenida por Linus Torvalds.
    • Stable: versiones corregidas y mantenidas por otros responsables
    • Long Term Support (LTS): versiones con soporte prolongado

“El kernel es responsable de comunicar el hardware con las aplicaciones software”

Siguiente apartado -> Distribuciones de GNU/Linux

Índice de la sección

Índice del curso