+34 621 227 416

L-V (9:00- 19:00)

Iniciar sesión

Qué es el Kernel, cuál es su trabajo y cómo funciona

Franco Brutti

25/5/23

25/5/23

Qué es el Kernel, cuál es su trabajo y cómo funciona
Qué es el Kernel, cuál es su trabajo y cómo funciona
Qué es el Kernel, cuál es su trabajo y cómo funciona

Todos sabemos que hardware y software son dos caras diferentes de una misma moneda, pero, ¿alguna vez te preguntaste qué los comunica? Hoy te traemos la respuesta a esta pregunta que quizás alguna vez pasó por tu cabeza: Kernel.

Este núcleo es la parte central del sistema operativo que hace de puente entre software y hardware, pero todavía hay mucho más por contar. 

¿Te interesa saber cómo funciona? Entonces sigue leyendo.

Kernel: el corazón del sistema operativo

Toda aquella persona que trabaja con un sistema operativo también trabaja con Kernel, muchas veces, sin darse cuenta o saberlo, pero tiene un trabajo importante al comunicar el software y el hardware. 

Y es que Kernel es la parte encargada de todos los aspectos de organización de los procesos y datos de cada ordenador que se realiza en segundo plano. 

Para que lo entiendas mejor, son como las venas o el corazón que permiten el flujo de sangre (información, datos, comandos o como prefieras llamarlos) del ordenador.

Al ser el núcleo del sistema operativo, hace de interfaz comunicando el software y el hardware, razón por lo que se usa en todo momento. De ahí que le digamos el corazón del sistema operativo. 

¿Es todo lo que hace? Pues no. El corazón no solo bombea sangre en el cuerpo humano, sino que también la limpia. 

De la misma forma, el Kernel controla todos los accesos al procesador y la memoria, pero también es responsable de los drivers (controladores) más importantes y tiene la capacidad de acceder a los hardwares de forma directa.

Si tuviésemos que llegar a una conclusión de todo esto, Kernel es la base que permite la interacción entre hardware y software, gestionando los recursos de la manera más eficiente que se pueda.

¿Qué es el Kernel?

No entraremos en tecnicismos y vamos a definirlo de manera clara y simple: un complemento que se encuentra en el centro del sistema operativo que hace de interfaz entre el usuario (tú) y la máquina. 

Está encargado de todas las funciones de mayor relevancia del hardware, sin importar cuál sea el sistema operativo, Linux, macOS, Windows, servidores, virtualizaciones como KVM, hasta tu smartphone tiene un Kernel en el núcleo que permite que abras WhatsApp. Curioso, ¿no? Está ahí y muchas veces no lo sabemos.

Si lo piensas, el Kernel da o transmite órdenes. Imagina que escribes un mensaje de WhatsApp, pues en el núcleo se recibe un System Call al momento de escribir. Mientras tú estás tocando las teclas en la pantalla de tu móvil, el Kernel está procesando todo eso para convertirlo en el lenguaje de la máquina y enviarlo al CPU.

Esto es gracias a que el Kernel es capaz de controlar todas las órdenes que recibe el dispositivo. 

Aunque en este formato donde te lo explicamos se ve lento, la verdad es que todo ocurre en cuestión de milisegundos y en un segundo plano donde tú, como usuario, ni siquiera te enteras.

¿Qué estructura tiene Kernel?

Como todo elemento en el mundo de la programación cuenta con diferentes capas; sin embargo, sin importar que se trate del Kernel de un ordenador con sistema operativo macOS, Linux, Windows o tu móvil, este se mantiene igual a nivel estructural.

  • En la capa más baja encontramos la interfaz con hardware, donde están los procesadores, memoria y dispositivos. Aquí es donde se realizan tareas de controladores de red o controladores de PCI Express.

  • Justo encima tenemos la capa de gestión de memoria que se dedica a la distribución de la memoria ram y la memoria virtual del dispositivo.

  • Luego, encontramos la capa de gestión de procesos, también conocida como scheduler, encargada de la gestión del tiempo y la que permite que el dispositivo realice diferentes tareas al mismo tiempo (multitasking).

  • Acercándonos al final encontramos el gestor de dispositivo, que se conoce como Device Management.

  • Finalmente, en la capa más alta está el sistema de archivos. Aquí es donde recibe un espacio en la memoria principal: caché, RAM, entre otros; o secundaria: disco duro, USB y demás; a los procesos.

¿Qué secuencia sigue en sus procesos?

Al contar con diferentes capas todas las órdenes que recibe tienen una secuencia que seguir para poder ser ejecutada. El Kernel acompaña y sirve como guía durante todo el recorrido de la orden que le das desde el hardware del sistema operativo hasta su destino en el software de la aplicación. 

¿Quieres un ejemplo? Cuando desbloqueas el móvil para abrir la mensajería de WhatsApp. Comienza a trabajar apenas tú como usuario, accedes al dispositivo en un proceso que se llama Interfaz Gráfica del Usuario, cuya terminación en inglés es GUI. 

Se puede decir que el Kernel está limitado con el shell o, como también se le conoce, la interfaz del usuario. Sería bueno pensar en shell como un anillo donde en el centro se encuentra el Kernel actuando como un núcleo. 

¿Qué tareas tiene un Kernel?

La principal tarea de un Kernel es el multitasking. Primero, tiene que cumplir con todos los tiempos establecidos para dar la respuesta a los usuarios, pero también permanecer disponibles para tareas adicionales que se soliciten. 

Básicamente, cuando estás escuchando música en Spotify, mientras escribes un mensaje de WhatsApp.

¿Esto es una regla que tiene que seguirse en todo momento? Claro que no, ya que hay excepciones para garantizar el funcionamiento del sistema operativo tan rápido como sea posible. 

¿Alguna vez se detuvo el funcionamiento de alguna aplicación de golpe? Se requería mantener el mejor rendimiento posible del dispositivo. 

El Kernel funciona como un intermediario entre el  software del sistema, de la aplicación y las diferentes bibliotecas. Toda la interfaz gráfica queda a cuenta de otro elemento, es decir, es independiente del Kernel. 

Veamos un ejemplo más práctico. Al encender tu ordenador el Kernel se carga de inmediato en la memoria con el fin de crear una protección en el gestor de inicio para que no pueda ser borrado ni modificado.

Luego se encienden todos los dispositivos conectados e inicia todos los procesos primero. 

Ahora, es el turno de que los servicios del sistema sean cargados, se delimitan qué procesos tienen que ser detenidos y cuáles no, se da inicio a los programas de usuario y la asignación de espacio en el almacenamiento. 

Funciones del Kernel

Ahora es cuando al momento tenemos que hablar de las principales funciones que realiza el Kernel:

  1. Gestión de memoria: analiza cuánta memoria es utilizada para almacenar diversos tipos de elementos, pero también el sitio que usa para su guardado.

  2. Gestión de procesos: establece cuáles procesos pueden usar la unidad de procesamiento, cuándo y por cuánto tiempo.

  3. Controladores de dispositivos: funciona como un puente entre el hardware y los diferentes procesos que se ejecutan.

  4. Seguridad y llamadas al sistema: recibe las diferentes solicitudes de servicio por parte de los procesos.

  5. Protección: otorga y niega permisos a software de dudosa procedencia que podrían afectar el funcionamiento del dispositivo.

  6. Gestión de dispositivos externos: todos los dispositivos que conectes en tu ordenador o móvil, quedan sujetos a la gestión del Kernel. 

  7. Gestión de optimización: al ejecutar diferentes procesos por su características multitasking, establece prioridades y desecha los irrelevantes para un buen funcionamiento.

funciones del kernel

Así funciona un Kernel

Empecemos aclarando que es el núcleo del sistema operativo y por tanto, no puede ser confundido con una API o un framework. Aclarado esto, es más fácil establecer qué sí es un Kernel: como te lo dijimos ya, el núcleo del SO.

Ahora, para que podamos entender el funcionamiento de un Kernel en cualquier sistema operativo hay que dividirlo en 3 niveles:

  1. Hardware: la base del sistema, también conocido como la memoria, el procesador, todos los dispositivos de entrada y salida. El CPU o el móvil realizan una escritura y lectura de código como los cálculos que requiere la memoria.

  2. Kernel: el núcleo del sistema operativo: windows, linux, macOS, iOS, Android. Indica las diferentes tareas que tienen que hacerse. 

  3. Procesos de usuarios: todas aquellas tareas que le mandas al dispositivo y que el Kernel procesa y gestiona. 

Ahora hay que aclarar que existen dos códigos para un sistema de usuario.

  1. Modo Kernel: ofrece acceso ilimitado a todos los hardwares que se conectan. 

  2. Modo usuario: cuenta con acceso restringido al SCI. 

Si ocurre un error, el Kernel entra como mediador y repara todos los daños posibles, pero si por alguna razón, el Kernel fuera el origen del fallo, podría significar la caída de todo el sistema. 

Tipos de Kernel

Hay que prestar atención a esto porque se dividen en dos tipos, esenciales y no esenciales. 

¿Qué quiere decir esto? Que algunos tienen un uso más común que otros, pero veámoslo de manera general a todos.

Esenciales

  1. Kernel monolítico: es un Kernel de gran tamaño que puede gestionar todas las tareas. Se encarga de la gestión de memoria y procesos, así como de la comunicación entre los procesos y el soporte de las diferentes funciones de los drivers y el hardware. Los sistemas operativos que recurren al Kernel monolítico son Linux, OS X y Windows.

  2. Microkernel: los Kernel que están diseñados con pequeños tamaños tienen una clara función: evitar el colapso total del sistema en caso de un fallo. Para cumplir con todas las tareas como un Kernel monolítico cuenta con diferentes módulos. Es curioso, pero hasta ahora solo el Mach de OS X es el único que utiliza el microkernel.

  3. Kernel híbrido: combinación entre el microkernel y el Kernel monolítico. Nos encontramos ante un Kernel grande, pero compacto y que puede ser modulado y otras partes del mismo Kernel pueden cargarse de manera dinámica. Es utilizado en Linux y OS X. 

No esenciales

  1. Nanokernel: si el microernel es pequeño, este es todavía más reducido, pero su uso está destinado a sistemas embebidos ya que el nivel de fiabilidad es mayor. 

  2. Exokernel: la estructura que propone un exokernel es innovadora ya que se estructura de manera vertical. Los núcleos son pequeños y su desarrollo tiene fines investigativos. En un exokernel la toma de decisiones está a cargo de los programas, para hacer el uso de los recursos del hardware en ciertas bibliotecas. El Kernel se limita a evitar errores en los permisos de hardware y eludir conflictos.

  3. Unikernel: es un Kernel destinado a la eliminación de capas intermedias entre el hardware y las aplicaciones, ya que busca simplificar lo más posible todos los procesos. Es habitual en dispositivos de bajo consumo como los IoT.

  4. Anykernel: otro concepto innovador que busca conservar las cualidades de los Kernel monolíticos, pero también facilitar el desarrollo de los controladores, al mismo tiempo que ofrece mayor seguridad al usuario. 

tipos de kernel

¿Cuántos Kernel usas al día?

Más de lo que imaginas, ya que sí, te hemos puesto ejemplos en tu móvil, ya sea Android o iOS; y tu ordenador sin importar si prefieres Windows, Linux o MacOS, pero es que hasta algunos electrodomésticos utilizan un Kernel. 

¿Sabías que los routers también los utilizan?  La verdad es que si no conoces sobre el tema, es poco probable que conozcas la relevancia que tiene este elemento que hace de núcleo de los sistemas operativos. 

Es por eso que te proponemos lo siguiente: cuenta en tu casa cuántos ordenadores, móviles, routers o cualquier otro electrodoméstico crees que usen un Kernel y cuéntanos en los comentarios. 

Seguro que son más de los que imaginaste cuando comenzaste a leer este artículo. 

Haznos saber en comentarios 👇 qué te ha parecido la charla de hoy:

Si nunca te cansas de aprender…

¡Consigue toda una fuente de inspiración para mentes ambiciosas directamente a tu correo!

Recibe cada mes una selección de nuestros contenidos más TOP y hazte con los recursos que solo compartimos con nuestros suscriptores.