Sistemas operativos

¿Qué es el kernel y cómo funciona?

El núcleo o kernel es la parte central de un sistema operativo y es el que se encarga de realizar toda la comunicación segura entre el software y el hardware del ordenador mediante las llamadas al sistema, además de proveer de una API y otras funciones esenciales. Por ese motivo es la parte más importante de cualquier sistema operativo.

¿Qué es el kernel?

Un sistema operativo es una interfaz entre el usuario y la máquina, y justo en la base del sistema operativo se encuentra su núcleo o kernel. Es la parte más importante y la que se encarga de las funciones esenciales que provee un sistema operativo.

El software de sistema no solo es un S.O., también se agregan otros complementos al sistema operativo como puede ser una API, bibliotecas, programas que corren en segundo plano para realizar tareas esenciales o proveer de ciertos servicios, etc.

Si nos centramos en el sistema operativo, también se podría descomponer en una interfaz de usuario, una interfaz de llamadas al sistema o syscall, y de un kernel donde se encuentran implementadas funciones como:

  • Control de procesos o planificador (scheduler)
  • Gestor de E/S.
  • Sistema de archivos y controladores.
  • Sistema de comunicación.
  • Gestor de errores.
  • Gestor de recursos de hardware o memoria.
  • Seguridad.
  • Controladores de dispositivos de hardware.

Y justo bajo el kernel estaría el hardware al que gestiona. Por tanto, el kernel se puede entender como una interfaz entre el software de usuario, o la capa de usuario, y el hardware.

Tipos de kernel

Aunque Windows posee su propio kernel denominado Windows NT, hay una diferencia fundamental entre este y Linux (el núcleo de las distribuciones GNU/Linux). Mientras que el núcleo de Windows es completamente hermético y nadie puede modificarlo, ni conocer lo que realmente  hace, el de Linux es de código abierto, por lo que cualquiera puede hacerle las modificaciones que quiera, y confiar más en él al estar a la vista de todos, conociendo qué hace realmente, si tiene puertas traseras, y otros problemas de seguridad.

Pero si nos centramos en los tipos fundamentales de kernel y no en los kernel existentes, podemos encontrarnos con los siguientes:

  • Monolítico: este tipo de kernel tiene una estructura única donde todos los subsistemas se encuentran en un único módulo lógico. Carece de unas interfaces bien definidas entre subsistemas y permite trabajar en un solo espacio de direcciones cuando se carga el código en la memoria RAM, lo que reduce la complejidad. Además, trabajará en su totalidad en modo supervisor. Algunos ejemplos de sistemas con kernel monolítico son DOS, MacOS, OpenVMS, Multics, otros Unix, y Linux (antes, después pasó a ser un kernel más reducido con carga dinámica de módulos).
  • Microkernel: es un micronúcleo que tiene una estructura modular, es decir, los subsistemas no se encuentran en un único módulo lógico, sino que cada uno está en un módulo propio. Esto hace que resulten más fáciles de desarrollar, pero su rendimiento puede ser inferior. Algunos ejemplos de este tipo de kernel lo tienes en AIX, Hurd, L4, Minix, SymbianOS, etc.
  • Híbrido: es una mezcla de los dos conceptos anteriores, con una estructura básica como un microkernel y otras partes de código no esenciales como módulos. Ejemplos de este tipo de núcleo son Windows NT, XNU (macOS), ReactOS, etc.
  • Nanokernel: este tipo de kernel es muy recudido, aún más pequeño que un microkernel. Son usados para sistemas embebidos porque aporta mucha fiabilidad.
  • Exokernel: está estructurado de forma vertical, con una estructura bastante novedosa. Son núcleos pequeños y se crearon con fines de investigación. En este caso, los programas son los encargados de tomar decisiones sobre la gestión de recursos de hardware haciendo uso de ciertas bibliotecas. El kernel solo se encargará de evitar errores de permisos de hardware y eludir conflictos.
  • Unikernel: es un concepto diferente y reducido que permite simplificar al máximo y eliminar capas intermedias entre las aplicaciones y el hardware. Es usado también en sistemas embebidos o dispositivos de bajo consumo como los de IoT.
  • Anykernel: es otro concepto novedoso y radical cuya finalidad es conservar las ventajas de un kernel monolítico y al mismo tiempo facilitar el desarrollo de controladores, además de conseguir mayor seguridad a nivel de usuario.

Como curiosidad decir que al cabo del día usas más dispositivos con un sistema operativo y un kernel de los que podrías imaginar. Desde algunos electrodomésticos, hasta otros aparatos como los routers o un NAS, pasando por el propio PC, dispositivos móviles, IoT, etc. ¿Sabrías decir cuántos kernels usas en casa?

Gustavo Gamarra

Soy operador de PC e instalador de redes informáticas , redactor y escritor en mis ratos libres. Amante de la tecnología, el cine, el fútbol y los videojuegos.
Los datos de carácter personal que nos facilite mediante este formulario quedarán registrados en un fichero de Miguel Ángel Navas Carrera, con la finalidad de gestionar los comentarios que realizas en este blog. La legitimación se realiza a través del consentimiento del interesado. Si no se acepta no podrás comentar en este blog. Puedes consultar Política de privacidad. Puede ejercitar los derechos de acceso, rectificación, cancelación y oposición en [email protected]
Botón volver arriba