El término inglés kernel, que puede traducirse como “núcleo”, no forma parte del diccionario de la Real Academia Española (RAE). Su uso en nuestra lengua, sin embargo, es bastante frecuente, sobre todo en el ámbito de la informática.
Se denomina kernel al software que compone la parte esencial de un sistema operativo. A través del kernel, los diversos programas de una computadora (ordenador) pueden acceder al hardware, por ejemplo. El kernel también se encarga de gestionar los recursos mediante servicios de llamada al sistema.
Una de las funciones del kernel, en este marco, es definir qué software puede emplear un dispositivo de hardware y por cuánto tiempo. Por eso es muy importante en la administración de la memoria RAM.
Lo que hace el kernel, en definitiva, es comunicar al software con el hardware. Para esto se encarga de gestionar los dispositivos físicos (el procesador, los periféricos, etc.) y los diversos programas informáticos, ordenando cómo éstos acceden a los recursos.
Dado que existe un gran número de programas y cada uno de ellos puede acceder al hardware de forma limitada, el kernel tiene la función de administrar esta interacción, decidiendo qué dispositivo puede usar cada programa y por cuánto tiempo. Esto se conoce con el nombre de multiprogramación, una técnica mediante la cual dos o más procesos pueden ser alojados en la memoria principal para ser ejecutados de forma concurrente por el procesador principal.
El acceso directo al hardware puede ser muy complejo. Por esta razón, el kernel suele hacer esto por medio de lo que se conoce como capa de abstracción de hardware, un componente del sistema operativo que sirve como interfaz entre el programa y los dispositivos. Esta capa de abstracción nos provee una plataforma consistente de hardware para que ejecutemos el software sobre ella.
Gracias al uso de la capa de abstracción de hardware es posible ocultar la complejidad antes mencionada y facilitarle al desarrollador una interfaz clara y uniforme para que haga uso de los programas y dispositivos.
Es importante señalar que ciertas arquitecturas no poseen diferentes modos de ejecución, y esto acarrea que sus sistemas operativos no tengan un kernel propiamente dicho. Un ejemplo son los llamados sistemas empotrados.
Es posible diferenciar entre cuatro clases de kernel: los núcleos monolíticos, los núcleos híbridos, los micronúcleos y los exonúcleos. Cada uno se encarga de diferentes procesos de acuerdo a sus características.
El kernel monolítico es una arquitectura en la cual el sistema operativo es el único que trabaja en modo supervisor. Una de sus características distintivas es que solamente define una interfaz virtual de alto nivel.
El micronúcleo o microkernel brinda un número de llamadas mínimas al sistema para la implementación de servicios básicos, como la planificación básica, la comunicación entre procesos y los espacios de direcciones.
El núcleo híbrido se puede entender como un micronúcleo que posee una cierta cantidad de código en espacio de núcleo para ejecutarlo a una velocidad mayor que si se encontrara en espacio de usuario. Este código no se considera esencial.
El exonúcleo o exokernel es un sistema que fue desarrollado en el Instituto Tecnológico de Massachusetts para ser usado en proyectos de investigación. Su objetivo principal es la creación de una suerte de capa de software para otros sistemas virtuales.
Los tipos de kernel también varían según el sistema operativo. El kernel de Windows, el famoso SO de Microsoft, es hermético: ningún usuario tiene la posibilidad de modificarlo. El kernel de Linux, por el contrario, es de código abierto. Esto quiere decir que, quien lo desea, puede establecer cambios, lo que da lugar a la existencia de múltiples distribuciones de Linux. El kernel de Linux además puede actualizarse independientemente del resto del SO.