Quien trabaja con un sistema operativo también trabaja con un kernel. Por lo general, sin darse cuenta, ya que el kernel supervisa la or­ga­ni­za­ción de procesos y datos de cada ordenador en un segundo plano. Sin él, prá­c­ti­ca­me­n­te 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 co­n­ti­nua­me­n­te. 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 pro­ce­sa­dor y a la memoria, es re­s­po­n­sa­ble de los drivers (co­n­tro­la­do­res) más im­po­r­ta­n­tes y puede acceder di­re­c­ta­me­n­te al hardware. Un kernel es la base de la in­ter­ac­ción entre el hardware y el software y gestiona sus recursos de la forma más eficiente posible.

Dominios web
Compra y registra tu dominio ideal
  • Domina el mercado con nuestra oferta 3x1 en dominios
  • Función Domain Connect para una co­n­fi­gu­ra­ción DNS si­m­pli­fi­ca­da gratis
  • Registro privado y gratis para mayor seguridad

¿Qué es el kernel?

El kernel se encuentra en el centro del sistema operativo y controla todas las funciones im­po­r­ta­n­tes del hardware, ya sea un sistema Linux macOS o Windows, un sma­r­t­pho­ne, un servidor, una vi­r­tua­li­za­ción como KVM o cualquier otro tipo de ordenador.

Kernel - Es­tru­c­tu­ra

Un kernel siempre tiene la misma es­tru­c­tu­ra y consta de varias capas:

  • La capa más baja es la interfaz con el hardware (pro­ce­sa­do­res, memoria y di­s­po­si­ti­vos). Esta capa realiza tareas como la de co­n­tro­la­dor de red o co­n­tro­la­dor PCI Express.
  • Sobre ella se encuentra la gestión de la memoria, que di­s­tri­bu­ye 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 mu­l­ti­ta­s­ki­ng.
  • A co­n­ti­nua­ción, el gestor de di­s­po­si­ti­vos (Device Ma­na­ge­me­nt).
  • La capa más alta es el sistema de archivos. Allí, se le asigna un espacio en la memoria principal (caché, RAM, etc) o se­cu­n­da­ria (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 apli­ca­ció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 di­re­c­ta­me­n­te 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 in­fo­r­má­ti­co?

Como regla ne­mo­té­c­ni­ca ayuda la similitud fonética de kernel con el rango militar anglófono Colonel (en español, coronel): ambos dan órdenes o las tra­n­s­mi­ten. 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 pro­ce­sa­mie­n­to paralelo de di­fe­re­n­tes tareas, el mu­l­ti­ta­s­ki­ng. Para ello debe, por un lado, cumplir con los tiempos es­ta­ble­ci­dos y, por otro, pe­r­ma­ne­cer di­s­po­ni­ble para tareas adi­cio­na­les.

La norma necesita ex­ce­p­cio­nes para poder funcionar en un sistema tan acelerado como es el sistema operativo. Por tanto, el kernel solo sirve de in­te­r­me­dia­rio para el software del sistema, el software de apli­ca­ción y las bi­blio­te­cas. La interfaz gráfica de un sistema operativo es co­m­ple­ta­me­n­te in­de­pe­n­die­n­te del kernel, incluso en el caso de Linux.

Nota

En los sistemas mu­l­tiu­sua­rio, el kernel también controla los derechos de acceso a los archivos y a los co­m­po­ne­n­tes de hardware. El ad­mi­ni­s­tra­dor de tareas muestra cuáles son en ese momento. Si se finaliza una tarea desde el ad­mi­ni­s­tra­dor 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 mo­di­fi­ca­do ni borrado.

A co­n­ti­nua­ción, el kernel enciende los di­s­po­si­ti­vos co­ne­c­ta­dos 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 asi­g­na­ción de espacio de al­ma­ce­na­mie­n­to.

¿Cómo funciona un kernel?

La cuestión de cómo funciona se aclara con una co­n­tra­pre­gu­n­ta: ¿qué no es un kernel? El kernel no es el núcleo del pro­ce­sa­dor, sino el núcleo del sistema operativo. Un kernel tampoco es una API ni un framework.

En cambio, los sistemas ope­ra­ti­vos mu­l­ti­ke­r­nel pueden utilizar di­fe­re­n­tes núcleos de un pro­ce­sa­dor mu­l­ti­nú­cleo como una red de distintas CPU in­de­pe­n­die­n­tes. ¿Cómo funciona? A través de la es­tru­c­tu­ra especial del kernel, que está formado por una serie de co­m­po­ne­n­tes di­fe­re­n­tes:

  • Como su capa más baja está cerca de los co­m­po­ne­n­tes, puede co­mu­ni­car­se di­re­c­ta­me­n­te con el hardware, el pro­ce­sa­dor y el al­ma­ce­na­mie­n­to. A lo largo de las cinco capas, las funciones del kernel difieren, desde la gestión de procesos hasta el gestor de di­s­po­si­ti­vos. La capa superior, en cambio, no tiene acceso a los co­m­po­ne­n­tes, pero establece la co­mu­ni­ca­ción con el software.
  • Los programas de apli­ca­ción se ejecutan en el sistema in­de­pe­n­die­n­te­me­n­te del kernel y solo acceden a sus funciones. Sin el kernel, la co­mu­ni­ca­ción entre el programa y el hardware no sería posible.
  • Varios procesos pueden eje­cu­tar­se al mismo tiempo a través de los mu­l­ti­ta­s­ki­ng kernels. Sin embargo, en principio, una CPU solo puede gestionar un proceso a la vez, a menos que se trate de un sistema mu­l­ti­nú­cleo. Es el scheduler el que genera una sensación de mu­l­ti­ta­s­ki­ng al realizar los cambios rápidos de proceso.

Las cuatro funciones del kernel pueden derivarse de sus co­m­po­ne­n­tes:

  1. Gestión del al­ma­ce­na­mie­n­to: controla cuánta memoria se utiliza y dónde.
  2. Gestión de procesos: determina qué procesos puede utilizar la CPU, cuándo y durante cuánto tiempo.
  3. Co­n­tro­la­dor de di­s­po­si­ti­vos: comunica el hardware con los procesos.
  4. Llamadas al sistema y seguridad: recibe pe­ti­cio­nes de servicio de los procesos.

Las funciones de un kernel, cuando es im­ple­me­n­ta­do ade­cua­da­me­n­te, pe­r­ma­ne­cen in­vi­si­bles para los usuarios. Funciona en su propio mundo, en el espacio del kernel. Los archivos, programas, juegos, na­ve­ga­do­res, etc. en de­fi­ni­ti­va, todo lo que ve el usuario tiene lugar en el espacio del usuario. La in­ter­ac­ció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:

  1. Hardware. La base del sistema que consiste en la memoria, el pro­ce­sa­dor y los di­s­po­si­ti­vos de entrada y salida. La CPU realiza la lectura y escritura de código al igual que los cálculos que requiere la memoria.
  2. Kernel. El núcleo de un sistema operativo. Indica a la CPU lo que debe hacer.
  3. Procesos de usuario. Todos los procesos en ejecución que gestiona el kernel. El kernel permite la co­mu­ni­ca­ción entre procesos y se­r­vi­do­res, también conocida como co­mu­ni­ca­ción entre procesos (IPC).

Existen bá­si­ca­me­n­te 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 re­s­tri­n­gi­do al SCI. Cuando se produce un error en el modo de usuario, no ocurre mucho: de hecho, en ese momento el kernel in­te­r­vie­ne y repara los posibles daños. Por otro lado, un fallo del kernel puede hacer caer todo el sistema. No obstante, existen pre­cau­cio­nes 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 mu­l­ti­ta­s­ki­ng kernel. Con la in­co­r­po­ra­ción de la gestión de accesos, se convierte en un sistema mu­l­tiu­sua­rio en el que varios usuarios pueden trabajar si­mu­l­tá­nea­me­n­te. La au­te­n­ti­ca­ción la realiza el kernel, que puede asignar o de­s­vi­n­cu­lar 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 ope­ra­ti­vos. A su vez, Microsoft también utiliza un kernel Linux para el Windows Subsystem for Linux.

Nota

En cuanto a los di­fe­re­n­tes tipos de kernel, es fácil perderse: los sistemas Linux y los di­s­po­si­ti­vos Android utilizan un kernel de Linux, Windows utiliza el kernel NT sobre el que se co­n­s­tru­yen varios su­b­si­s­te­mas, mientras que Apple utiliza un kernel XNU.

Los tres tipos de kernel

Existen di­fe­re­n­tes tipos de kernel para di­fe­re­n­tes sistemas ope­ra­ti­vos y di­s­po­si­ti­vos finales. Conforme a sus ca­ra­c­te­rí­s­ti­cas, pueden dividirse en tres grupos:

  1. Kernel mo­no­lí­ti­co. Un kernel grande para todas las tareas. Es el único re­s­po­n­sa­ble de la gestión de la memoria y de los procesos, de la co­mu­ni­ca­ción entre procesos y pro­po­r­cio­na funciones de soporte de drivers y hardware. Los sistemas ope­ra­ti­vos que usan el kernel mo­no­lí­ti­co son Linux, OS X y Windows.
  2. Mi­cro­ke­r­nel. El mi­cro­ke­r­nel se ha diseñado in­te­n­cio­na­da­me­n­te 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 apli­ca­ción solo existe el co­m­po­ne­n­te Mach de OS X, ya que hasta ahora no hay ningún sistema operativo con mi­cro­ke­r­nel.
  3. Kernel híbrido. La co­m­bi­na­ción del kernel mo­no­lí­ti­co y el mi­cro­ke­r­nel se denomina kernel híbrido. En este caso, el kernel grande se hace más compacto y modulable. Otras partes del kernel pueden cargarse di­ná­mi­ca­me­n­te. Esto ya ocurre en cierta medida en Linux y OS X.
Ir al menú principal