Si cada dispositivo electrónico fuese una persona, el kernel sería su cerebro. Si cada aparato funcionase como una empresa, el núcleo del sistema operativo sería su CEO.
En cada dispositivo inteligente, ya sea un ordenador, un smartphone o una smart TV, tenemos dos partes bien diferenciadas: una física, el hardware, y una lógica, el software. Dentro de esta última, existe un conjunto de programas y rutinas que es más importante que el resto porque se encarga de gestionar los recursos físicos del dispositivo y hacer que el resto del software funcione. Es el sistema operativo (SO). Y, a los mandos del SO, se sienta el kernel.
Qué es el núcleo del sistema operativo
El kernel es el núcleo del sistema operativo. De hecho, la palabra deriva del término alemán kern, que significa grano, centro o núcleo. El kernel es así la parte más importante de un sistema operativo. Se trata del segundo programa en arrancar una vez encendemos el dispositivo (el primero es el bootloader) y el último en abandonar la memoria cuando lo apagamos. Sin él, el resto de procesos no pueden empezar a funcionar. Es, por decirlo así, el programa que tiene el control sobre todos los demás.
El kernel es también un programa con el que el usuario no puede interactuar. Es un software que se comunica solo con el resto de programas y rutinas del sistema operativo y con el hardware. Es el encargado de facilitar que el resto de programas accedan a la capacidad del hardware. En otras palabras, es el que gestiona los recursos y decide qué programa podrá usar qué capacidad del hardware y durante cuánto tiempo.
El núcleo del sistema operativo es también el programa que se encarga de todas las funciones básicas de un dispositivo: garantizar la carga y la ejecución de los procesos y las entradas y salidas de información hacia o desde la memoria y el procesador. Su importancia en el sistema es tal que, habitualmente, el código del kernel se carga en un área protegida de la memoria, para así evitar que sea modificado por otros programas del sistema operativo.
Cuáles son las funciones de un kernel
Existen multitud de kernels diferentes, algunos diseñados como parte de una única versión de un sistema operativo, como sucede con casi todos los de Windows, otros más flexibles dentro de un único SO, como el caso de Linux, y otros desarrollados de forma externa, como el caso de Mach, un kernel creado en la Universidad Carnegie Mellon hace 30 años que acabó siendo la base para el núcleo del sistema operativo de Mac.
Cada kernel tiene sus particularidades y sus funciones varían bastante de modelo a modelo. Sin embargo, por regla general, incluye los siguientes elementos:
- Planificador o scheduler. Un programa que se encarga de determinar cómo repartir el tiempo y el orden de acceso al procesador.
- Supervisor del sistema operativo. Un programa que se ocupa de controlar el desarrollo y funcionamiento de otros programas.
- Interrupt handler, rutina de servicio de interrupción o ISR (por sus siglas en inglés). Un programa que gestiona las solicitudes de los componentes de hardware, como el disco duro o los periféricos.
- Gestor de memoria. Un programa que controla el proceso de asignación de memoria a los programas que lo solicitan.
En definitiva, a modo de resumen, el kernel permite la comunicación entre el software y todo el hardware (incluyendo periféricos), gestiona la asignación de memoria de forma eficiente y controla el acceso a la capacidad de procesamiento del dispositivo. Es decir, es el programa que le dice al resto de componentes de un dispositivo cuándo y cómo usar los recursos disponibles.
Windows y Linux: las diferencias
Android es, hoy por hoy, el sistema operativo más utilizado. Sin embargo, desaparece de las gráficas si quitamos de la ecuación los dispositivos móviles. En el sector de los ordenadores, Windows es el rey, con más de un 75% de cuota de mercado. Le siguen macOS, el sistema operativo de los ordenadores de Apple, y Linux.
Para profundizar un poco más en lo dispares que pueden llegar a ser los kernels entre sí, vamos a ver las diferencias entre el kernel de Windows y el de Linux.
Para empezar, el primero es un kernel comercial, desarrollado por y para Windows por Microsoft. Como tal, no se conocen los detalles de su funcionamiento ni su código fuente. El kernel de Linux, sin embargo, es de código abierto y está basado en Unix, así que su código fuente está disponible para todo el que quiera contribuir a su desarrollo.
Además, tal como recoge Yúbal FM en este artículo de ‘Genbeta’, existen muchas otras diferencias en cómo encara los procesos cada kernel, aunque las funcionalidades son parecidas. Mientras el kernel de Windows tiene dos modos (es híbrido), el de Linux solo tiene uno (es monolítico). Además, tienen diferentes protocolos de control de acceso a archivos. Por último, en función de la versión, el kernel Windows puede no soportar diferentes usuarios y sesiones (sí lo hace en las últimas versiones), mientras Linux siempre es multiusuario.
En resumen, el kernel es el centro de mando de nuestros dispositivos electrónicos. El que gestiona que el hardware no se sature y que los programas y el sistema operativo usen de forma eficiente los recursos. Los caminos para llegar ahí pueden ser diferentes, pero el objetivo final es siempre el mismo.
En Nobbot | Las mejores distribuciones de Linux para cada ordenador
Imágenes | Unsplash/Harrison Broadbent, Jo Morales, Oleg Gospodarec