Kernel - El núcleo del sistema operativo
Quien trabaja con un sistema operativo también trabaja con un kernel. Por lo general, sin darse cuenta, ya que el kernel supervisa la organización de procesos y datos de cada ordenador en un segundo plano. Sin él, prácticamente nada funciona.
El kernel es el núcleo de un sistema operativo y, por tanto, la interfaz entre el software y el hardware. Es por ello por lo que se está usando continuamente. En pocas palabras: el kernel es el corazón de un sistema operativo.
Sin embargo, no solo es el núcleo del sistema, sino también un programa que controla todos los accesos al procesador y a la memoria, es responsable de los drivers (controladores) más importantes y puede acceder directamente al hardware. Un kernel es la base de la interacción entre el hardware y el software y gestiona sus recursos de la forma más eficiente posible.
- Certificado SSL Wildcard
- Registro privado
- 1 cuenta de correo electrónico por contrato
¿Qué es el kernel?
El kernel se encuentra en el centro del sistema operativo y controla todas las funciones importantes del hardware, ya sea un sistema Linux macOS o Windows, un smartphone, un servidor, una virtualización como KVM o cualquier otro tipo de ordenador.
Kernel - Estructura
Un kernel siempre tiene la misma estructura y consta de varias capas:
- La capa más baja es la interfaz con el hardware (procesadores, memoria y dispositivos). Esta capa realiza tareas como la de controlador de red o controlador PCI Express.
- Sobre ella se encuentra la gestión de la memoria, que distribuye la memoria RAM y la memoria virtual.
- La siguiente capa contiene el gestor de procesos (scheduler), que se encarga de la gestión del tiempo y permite el multitasking.
- A continuación, el gestor de dispositivos (Device Management).
- La capa más alta es el sistema de archivos. Allí, se le asigna un espacio en la memoria principal (caché, RAM, etc) o secundaria (disco duro, USB, etc) a los procesos.
Secuencia del proceso
Un kernel acompaña y guía durante todo el recorrido desde el hardware del sistema hasta el software de aplicación. Su trabajo termina donde comienza el acceso del usuario: en la Interfaz Gráfica del Usuario (GUI por sus siglas en inglés). Por tanto, el kernel limita directamente con el shell (es decir, con la interfaz del usuario). Lo mejor es pensar que el kernel es el núcleo y el shell es un anillo alrededor de este.
¿Qué es el kernel para un programa informático?
Como regla nemotécnica ayuda la similitud fonética de kernel con el rango militar anglófono Colonel (en español, coronel): ambos dan órdenes o las transmiten. Un programa envía “System Calls” al kernel, por ejemplo, cuando se escribe un archivo. Esta llamada al sistema es traducida por el kernel a lenguaje de máquina y remitida a la CPU. Para ello, el kernel controla todas las órdenes dirigidas a la CPU. A menudo todo esto ocurre en segundo plano sin que el usuario se dé cuenta.
¿Cuáles son las tareas de un kernel?
El principal cometido del kernel es el procesamiento paralelo de diferentes tareas, el multitasking. Para ello debe, por un lado, cumplir con los tiempos establecidos y, por otro, permanecer disponible para tareas adicionales.
La norma necesita excepciones para poder funcionar en un sistema tan acelerado como es el sistema operativo. Por tanto, el kernel solo sirve de intermediario para el software del sistema, el software de aplicación y las bibliotecas. La interfaz gráfica de un sistema operativo es completamente independiente del kernel, incluso en el caso de Linux.
En los sistemas multiusuario, el kernel también controla los derechos de acceso a los archivos y a los componentes de hardware. El administrador de tareas muestra cuáles son en ese momento. Si se finaliza una tarea desde el administrador de tareas, este se lo indica al kernel para que termine el proceso y así libere la memoria asignada.
Cuando se enciende un ordenador, lo primero que ocurre es que el kernel se carga en la memoria. Esto ocurre en una zona protegida, en el gestor de arranque, para que el kernel como programa no pueda ser modificado ni borrado.
A continuación, el kernel enciende los dispositivos conectados e inicia los primeros procesos. Se cargan los servicios del sistema, se inician o detienen otros procesos y se inician los programas de usuario como la asignación de espacio de almacenamiento.
¿Cómo funciona un kernel?
La cuestión de cómo funciona se aclara con una contrapregunta: ¿qué no es un kernel? El kernel no es el núcleo del procesador, sino el núcleo del sistema operativo. Un kernel tampoco es una API ni un framework.
En cambio, los sistemas operativos multikernel pueden utilizar diferentes núcleos de un procesador multinúcleo como una red de distintas CPU independientes. ¿Cómo funciona? A través de la estructura especial del kernel, que está formado por una serie de componentes diferentes:
- Como su capa más baja está cerca de los componentes, puede comunicarse directamente con el hardware, el procesador y el almacenamiento. A lo largo de las cinco capas, las funciones del kernel difieren, desde la gestión de procesos hasta el gestor de dispositivos. La capa superior, en cambio, no tiene acceso a los componentes, pero establece la comunicación con el software.
- Los programas de aplicación se ejecutan en el sistema independientemente del kernel y solo acceden a sus funciones. Sin el kernel, la comunicación entre el programa y el hardware no sería posible.
- Varios procesos pueden ejecutarse al mismo tiempo a través de los multitasking kernels. Sin embargo, en principio, una CPU solo puede gestionar un proceso a la vez, a menos que se trate de un sistema multinúcleo. Es el scheduler el que genera una sensación de multitasking al realizar los cambios rápidos de proceso.
Las cuatro funciones del kernel pueden derivarse de sus componentes:
- Gestión del almacenamiento: controla cuánta memoria se utiliza y dónde.
- Gestión de procesos: determina qué procesos puede utilizar la CPU, cuándo y durante cuánto tiempo.
- Controlador de dispositivos: comunica el hardware con los procesos.
- Llamadas al sistema y seguridad: recibe peticiones de servicio de los procesos.
Las funciones de un kernel, cuando es implementado adecuadamente, permanecen invisibles para los usuarios. Funciona en su propio mundo, en el espacio del kernel. Los archivos, programas, juegos, navegadores, etc. en definitiva, todo lo que ve el usuario tiene lugar en el espacio del usuario. La interacción de ambos mundos se realiza a través de una interfaz de llamadas al sistema, el SCI.
El kernel en el sistema operativo
Para entender cómo funciona el kernel del sistema operativo, lo mejor es pensar que un ordenador está dividido en tres niveles:
- Hardware. La base del sistema que consiste en la memoria, el procesador y los dispositivos de entrada y salida. La CPU realiza la lectura y escritura de código al igual que los cálculos que requiere la memoria.
- Kernel. El núcleo de un sistema operativo. Indica a la CPU lo que debe hacer.
- Procesos de usuario. Todos los procesos en ejecución que gestiona el kernel. El kernel permite la comunicación entre procesos y servidores, también conocida como comunicación entre procesos (IPC).
Existen básicamente dos modos para el código de un sistema: modo kernel o modo usuario. El código en modo kernel tiene acceso ilimitado al hardware, mientras que el código en modo usuario tiene acceso restringido al SCI. Cuando se produce un error en el modo de usuario, no ocurre mucho: de hecho, en ese momento el kernel interviene y repara los posibles daños. Por otro lado, un fallo del kernel puede hacer caer todo el sistema. No obstante, existen precauciones de seguridad para evitarlo.
¿Cuáles son los tipos de kernel?
Un tipo de kernel ya se ha descrito en este artículo: si varios procesos se ejecutan en un kernel al mismo tiempo, existen los llamados multitasking kernel. Con la incorporación de la gestión de accesos, se convierte en un sistema multiusuario en el que varios usuarios pueden trabajar simultáneamente. La autenticación la realiza el kernel, que puede asignar o desvincular los procesos llamados.
¿Qué es el kernel de código abierto?
Linux mantiene un extenso registro sobre sus kernels. Apple ha publicado como código abierto los tipos de kernel que usa para todos sus sistemas operativos. A su vez, Microsoft también utiliza un kernel Linux para el Windows Subsystem for Linux.
En cuanto a los diferentes tipos de kernel, es fácil perderse: los sistemas Linux y los dispositivos Android utilizan un kernel de Linux, Windows utiliza el kernel NT sobre el que se construyen varios subsistemas, mientras que Apple utiliza un kernel XNU.
Los tres tipos de kernel
Existen diferentes tipos de kernel para diferentes sistemas operativos y dispositivos finales. Conforme a sus características, pueden dividirse en tres grupos:
- Kernel monolítico. Un kernel grande para todas las tareas. Es el único responsable de la gestión de la memoria y de los procesos, de la comunicación entre procesos y proporciona funciones de soporte de drivers y hardware. Los sistemas operativos que usan el kernel monolítico son Linux, OS X y Windows.
- Microkernel. El microkernel se ha diseñado intencionadamente de un tamaño pequeño para que en caso de fallo no paralice todo el sistema operativo. No obstante, para que pueda asumir las mismas funciones que un kernel grande, está dividido en varios módulos. Como ejemplo de aplicación solo existe el componente Mach de OS X, ya que hasta ahora no hay ningún sistema operativo con microkernel.
- Kernel híbrido. La combinación del kernel monolítico y el microkernel se denomina kernel híbrido. En este caso, el kernel grande se hace más compacto y modulable. Otras partes del kernel pueden cargarse dinámicamente. Esto ya ocurre en cierta medida en Linux y OS X.