OnTopic: Hablemos sobre el kernel

 Cuando quieras entender un concepto difícil o saber cómo funciona cualquier cosa, divídelo en capas de abstracción

Primero 

¿Qué son las capas de abstracción?

A estas alturas, uds. ya habrán leído este blog y tendrán una imagen de como soy por cómo escribo. Generalmente no me gusta explicar conceptos difíciles con palabras difíciles. Así que vayamos al grano y entendamos como funciona esto de las capas.

Me di cuenta de algo cuando estudiaba ingeniería. Para entender un concepto difícil lo mejor que puedes hacer, es tomar en cuenta lo siguiente: 

  • No importa quién descubrió algo, la ecuación de..., la máquina de...
  • Tampoco interesa cómo fue el proceso que llevó al descubrimiento de..
  • Lo que verdaderamente importa es cómo darle uso ahora y mejorarlo después.
  • (Claro está que querrás saber el origen de las cosas, pero te aviso que si te enfrascas, no avanzas)
Cuando divides grandes preguntas o sistemas en pedazos pequeños, empiezan a denominarse "cajas negras" que se conectan unas a otras. No importan lo que lleven dentro, lo importante es que disponen de (al menos) una entrada y producen una o más salidas.

Analicemos un microchip por ejemplo. Podríamos decir que un chip es una caja negra con 5 pines de entrada y 3 pines de salida.

Ahora analicemos el cuerpo humano, tiene 5 sentidos ¿verdad? Estamos hablando de una caja negra con 5 entradas y múltiples salidas.

¿Una guitarra? Una caja negra de 24 trastes x 6 cuerdas = 144 entradas sencillas, y todas las combinaciones como salida

Ok ok entonces, ¿qué tiene que ver esto de las capas con las cajas negras? Veámoslo

Las capas de abstracción vienen siendo las cajas negras de la informática. Aunque, el concepto aplica mas allá de este contexto abarcando todo lo que puedas imaginar. Se trata de la división de un todo, en pequeñas cajas con entradas y salidas.

Ahora sí: el kernel o núcleo

Tomemos en cuenta lo siguiente; toda aplicación que usas en tu Windows, Android, lata de atún, funciona gracias al modelo y apilado de capas de abstracción. Cada una de estas recibe, procesa y envía información a su capa mas cercana, la condición es que ninguna de estas capas está pendiente del trabajo de su vecina sino que cada una espera datos procesados para transferirlos a su vecina inmediata. El núcleo tan solo es una de las 5 capas que podemos encontrar.


El núcleo en este caso específico si lo ves desde abajo hacia arriba; recibe instrucciones de la capa de Lenguaje de Máquina, procesa los datos y los envía a la de Aplicación. Viceversa, de arriba hacia abajo; recibe información de la Aplicación, la digiere y la envía al Lenguaje de Máquina para que sean procesadas por las demás capas inferiores y así llegar al Hardware (recursos)

Asumamos que te gusta ver videos. Seguro te importa 3 pepinos cómo funciona el núcleo de tu compu, porque tu sólo observas la pantalla de un navegador con gatitos. Hasta este punto y sin notarlo te encuentras en la capa de abstracción de un usuario común. No tienes idea ni tampoco quieres saber como funciona tu PC, tu solo quieres una cosa, ¡gatitos!

Que puedas ver gatitos en una pantalla solo es posible gracias a la magia de las capas. Es decir, si usas YouTube sabes buscar un video. Sencillo. Sin embargo si alguna vez te has preguntado ¿Cómo es que puedo ver este video en mi pantalla? ¿Cómo se procesó el video? ¿Si un video es una secuencia de imágenes y estas se componen de bits, cómo funciona? Tratarás de dar explicaciones y llegarás al punto de no saber nada.

Es como un carro

¡Tu sabes manejar claro que si! pero no entiendes cómo funciona el motor y no tienes porqué entenderlo para saber manejar. ¿Por qué? ¡Capas!



Si vas entendiendo este asunto, te recomiendo vayas a los links que encontrarás en todo el post para mejor detalle. ¡Ahora, avancemos que vinimos a hablar del kernel!

Q&A's sobre el Kernel

Muy bonito lo de las capas Fran pero qué es el Kernel por fin

Es código de software integrado en el sistema operativo que cuando es solicitado por disparo de un evento o aplicación, administra y coordina la comunicación entre los datos introducidos por el usuario y los recursos físicos del sistema (CPU, RAM, HDD). Para verlo de otra manera se trata del director de la orquesta que hace que haya correcta comunicación entre máquina y usuario. Toda aplicación, en algún momento toca el kernel, en busca de recursos internos, si no, no podrían funcionar.

¿El kernel está contenido en el sistema operativo o es externo?

Si, todo SO tiene su kernel dedicado e integrado. El de Windows es NT, el de GNU es Linux, y el de MacOS es XNU.

¿Si el kernel es código, donde puedo encontrarlo en Windows?

No es fácil responder a esta pregunta, ya que el kernel no es solo un directorio y ya, son varios archivos contenidos en varias ubicaciones según propia estructura del SO. Pero para que tengamos una idea pueden buscar en su directorio C:\Windows\Boot donde verán algunos archivos del kernel

¿El kernel es modificable puedo editarlo?

Depende. Viniendo de Microsoft, con sus licencias y demás, se trata de un núcleo privativo, es decir no puedes editarlo (al menos no para distribuirlo). Quizás a nivel de archivos puedas abrir uno y comenzar a editarlo como curiosidad. Sin embargo dejo por acá un video tutorial de cómo crean un programa para el núcleo de windows para que tengas una idea.

¿Cómo hace el kernel para hablar con sus capas inferiores?

A través de compiladores*. Estos son otra clase de programas que funcionan como traductor de lenguajes de alto nivel (kernel por ejemplo) y lo transforman a lenguaje de máquina (hexadecimales y binarios), luego se convierte en señales eléctricas que corren por la motherboard para acceder a los recursos.

Fran, tengo mas preguntas sobre este tema ¿como hago?

Me alegra que preguntes, puedes escribirlo abajo en los comentarios y entre todos te daremos una respuesta.


* La explicación de compiladores podría venir en otra ocasión

Y hasta aquí DevOperos, espero que hoy sepan más que ayer.


Si te gustó este post y quieres un "OnTopic" de compiladores, escríbeme en los comentarios. Siempre estoy dispuesto a leerlos así sea el 2038 😁


Comentarios

Entradas más populares de este blog

Libro Resúmenes: Cómo Ganar Amigos e Influir en las Personas - Dale Carnegie

¿Cómo hacer amigos fácilmente con juegos de mesa?

Cambiando DevOps por ¿crear videojuegos? 🎮