abril 19, 2024

BitCuco

¡Hola Mundo!

Kernel de Linux: El núcleo del Sistema Operativo

kernel de linux

¡Hola BitCucos! En ésta ocasión os hablaré sobre el kernel de Linux (o núcleo) del Sistema Operativo. Elemento indispensable que procesa todas las instrucciones de tu computadora, y aún cuando es el elemento más importante del funcionamiento del Software de tu computadora, usualmente es el más olvidado.

¿Qué es el kernel de Linux?

Muchos ignoran su funcionamiento, a tal grado que al presentarse un fallo crítico o Kernel Panic, entran también en pánico, mayor incluso al que presentan los usuarios de Windows al vencerse su licencia de uso.

Al ser un tema muy extenso, trataré de resumir algunos puntos, que son importantes para entender el funcionamiento del kernel.

kernel de linux
Fuente de imagen: https://blog.desdelinux.net/wp-content/uploads/2018/09/linus-torvalds-con-2.jpg

Linus Torvals

En un post anterior, les mostré algunas de las características de Linux. Varias de éstas características fueron tomadas en cuenta por Linus Torvals, el inventor de Linux, al desarrollar el primer kernel de Linux en el año 1991.

El kernel de Linux fue escrito en lenguaje C y ensamblador, y al ser de código abierto, podemos acceder a su código fuente, el cual hasta la fecha de hoy (Mayo de 2020) tiene más de 910 mil commits, con una cantidad sumamente grande de desarrolladores que ha contribuido al proyecto (en el proyecto dice infinito, pero matemáticamente es imposible, aún contando toda la población mundial).

kernel de linux

Kernel de Linux vs kernel de Unix

Comunidad y Licencia: Aún cuando el kernel de Linux tiene muchas similitudes con el kernel de Unix, incluyendo instrucciones, comandos, procesos, etc. La realidad es que el kernel de Linux tiene una comunidad más grande y es open source, a diferencia de Unix, en donde varios de sus núcleos derivados son de licencia propietaria.

Código: En forma interna, Linux funciona como y se parece a Unix, pero sin copiar su código (tiene código distinto), por lo tanto Linux no es Unix, ni alguna distribución del software.

Uso: Además Linux es usado tanto en servidores como en equipos domésticos, mientras que Unix está diseñado especialmente para grandes equipos, como mainframes.

Arquitectura: En cuanto a arquitectura, Linux es compatible con gran gamma de microchips, desde x86, ARM, x86-64, mientras que Unix está diseñado para arquitecturas tipo RISC, así como Itanium.

kernel de linux

Principales Funciones del kernel de Linux

Gestión de memoria: El kernel es el encargado de asignar un espacio de memoria a cada proceso, en donde la solicitud puede ser realizada por programas en el disco duro, los cuáles al asignarles un espacio de memoria, se convierten en procesos.

Comunicación entre hardware y software: Permite la comunicación entre los diferentes componentes del hardware, incluyendo tarjetas, sensores, etc. con los procesos, a fin de que éstos puedan consumir los recursos provenientes del hardware.

Asignación de procesos: Los procesos en el sistema deben pasar por el core para ser utilizados, sin embargo el uso del core es una región crítica en donde a diferencia de la memoria, solo puede estar un solo proceso en un instante determinado (aún cuando sean nanodécimas de segundo), para ello el kernel de Linux asigna una cola de procesos “simultáneos” en donde cada uno tiene acceso a la región crítica por determinada cantidad de ciclos de reloj, controlados directamente por el hardware.

La asignación de procesos es regulada a través de un mecanismo de exclusión mutua, en donde generalmente son semáforos mutex, aunque también entran aquí el uso de diversos algoritmos como el problema del barbero durmiente o bien el problema de productor consumidor, los cuáles son mecanismos de exclusión mutua que regulan la entrada a la región crítica de los procesos.

Monitoreo de la salud del sistema: El kernel de Linux monitorea la salud del hardware utilizado, en donde lleva a cabo un control de salud de todos los componentes de hardware a su alcance, tales como sensores, dispositivos de plug and play, y todo aquél hardware que requiere de un controlador para funcionar.

Si detecta algún fallo lo notificará al usuario, y si detecta un fallo grave, dará por asentada la instrucción HALT, seguida de un Kernel Panic para evitar daños al equipo.

El Kernel Panic es el equivalente a la pantalla azul de la muerte de Windows y sucede cuando el sistema detecta un error o fallo irrecuperable y que puede ocasionar daños al sistema, lo que hace necesario detener el sistema.

Administración del sistema de archivos: Proporciona el acceso, seguridad, administración y comunicación a los usuarios del sistema, prepara el terreno para transferir el control a los usuarios de acuerdo a sus privilegios en el sistema.

Es necesario indicar que un usuario para el kernel de Linux no necesariamente es un humano, sino alguien con la habilidad de dar órdenes al sistema, de éste modo los servicios independientes también tienen su propio usuario.

Conclusiones

El kernel de Linux es el zócalo de tu sistema operativo, es el que procesa todas las peticiones de tu computadora a través de un set de instrucciones, cuya interpretación da lugar a tareas complejas, que es el objetivo de las computadoras en general.