robot de la enciclopedia para niños

Núcleo (informática) para niños

Enciclopedia para niños

Un núcleo o kernel es una parte muy importante del sistema operativo de una computadora. Imagina que es como el cerebro que controla todo lo que pasa dentro del ordenador. Su trabajo principal es permitir que los diferentes programas que usas puedan acceder de forma segura al hardware (las partes físicas de la computadora, como la memoria, el procesador o el disco duro).

Como hay muchos programas que quieren usar el hardware al mismo tiempo, el núcleo decide qué programa puede usar un dispositivo y por cuánto tiempo. Esto se llama multiprogramación. También hace que sea más fácil para los programadores usar el hardware, porque esconde la complejidad y ofrece una forma sencilla de interactuar con él.

En algunos sistemas, especialmente los más pequeños o específicos, puede que no haya un núcleo como tal, porque no necesitan esa forma de organizar el trabajo.

¿Cómo funciona el núcleo al encender la computadora?

Cuando enciendes un dispositivo electrónico, el procesador empieza a ejecutar un código muy pequeño que está guardado en una memoria especial. Este código inicializa las partes básicas del hardware y prepara todo para que el programa principal del sistema operativo pueda empezar a funcionar. Es como cuando un director de orquesta da la señal para que los músicos empiecen a tocar.

¿Qué hace un núcleo en general?

En la informática, el núcleo es el corazón del sistema operativo y se encarga de varias cosas importantes:

  • Comunicación: Permite que los programas hablen con el hardware para pedirle recursos.
  • Gestión de programas: Organiza los diferentes programas que se están ejecutando en la computadora al mismo tiempo.
  • Gestión del hardware: Administra los recursos físicos de la computadora, como la memoria, el procesador y los dispositivos externos.

El núcleo es muy poderoso porque tiene el control sobre cómo se usan los recursos del hardware, especialmente la memoria. Su existencia ayuda a que los sistemas sean más seguros y funcionen mejor.

Funciones principales del núcleo

Las funciones básicas de un núcleo son asegurar que los programas se carguen y se ejecuten, manejar las entradas y salidas de información (como cuando escribes en el teclado o guardas un archivo), y servir de puente entre los programas de usuario y las partes más internas del sistema.

Algunas funciones, como el manejo de dispositivos o las redes, pueden estar dentro del núcleo o fuera de él. Si están dentro, el sistema suele ser más rápido, porque el núcleo puede acceder a ellas de forma más directa.

El núcleo de Unix

Archivo:Kernel-Power
Cambios en el estado de energía de una máquina.

Un núcleo como el de Unix está escrito principalmente en un lenguaje de programación llamado lenguaje C. Su objetivo es permitir que muchos usuarios y programas trabajen al mismo tiempo en la computadora, compartiendo el procesador de manera eficiente.

El núcleo de Unix es como un administrador de recursos para cualquier programa que necesite usar la computadora. Sus funciones principales son:

  • Crear y organizar programas, asignándoles tiempo para usar el procesador.
  • Administrar el espacio en el sistema de archivos (donde se guardan los datos), incluyendo el acceso y la protección.
  • Supervisar la transferencia de datos entre la memoria principal y los dispositivos externos.

El núcleo siempre está en la memoria principal y tiene el control total de la computadora. Otros programas no pueden interrumpirlo directamente, solo pueden pedirle servicios a través de algo llamado "llamadas al sistema".

Cuando enciendes la computadora, una copia del núcleo se carga en la memoria. Luego, el núcleo inicia un proceso especial, el "proceso cero", que a su vez crea otros procesos, incluyendo el "proceso uno". Este último es muy importante porque se encarga de "dar vida" a todo el sistema, activando otros programas esenciales. Uno de ellos es el "despachador" o "planificador", que decide qué programa se ejecutará en cada momento.

El proceso "init" (inicialización) es el responsable de organizar los programas en Unix. Puede iniciar el sistema para un solo usuario o para varios. Cuando un usuario quiere iniciar sesión, el programa "login" se encarga de verificar su nombre y contraseña. Si son correctos, se inicia el programa "Shell", que es el que interactúa con el usuario.

Tipos de núcleos

No siempre se necesita un núcleo para usar una computadora. Al principio, los programas se cargaban y ejecutaban directamente. Pero con el tiempo, se hizo evidente que tener un programa central que gestionara todo era mucho más eficiente y seguro. Así nacieron los primeros núcleos.

Hay cuatro tipos principales de núcleos:

  • Núcleos monolíticos: Ofrecen muchas funciones y controlan el hardware de forma muy completa.
  • Micronúcleos: Son muy pequeños y solo ofrecen las funciones más básicas del hardware. Usan otros programas llamados "servidores" para añadir más funciones.
  • Núcleos híbridos: Son una mezcla de los dos anteriores. Son parecidos a los micronúcleos, pero incluyen algo de código adicional en el núcleo para que funcione más rápido.
  • Exonúcleos: No ofrecen casi ninguna función de control del hardware directamente. En su lugar, permiten que las aplicaciones usen "bibliotecas" que les dan acceso directo o casi directo al hardware.

Micronúcleos: pequeños y modulares

Archivo:Kernel-microkernel
Esquema de cómo funciona un micronúcleo.

El objetivo de un micronúcleo es ser muy simple y pequeño. Solo maneja las funciones más básicas del sistema operativo, como la gestión de programas pequeños (hilos), la memoria y la comunicación entre programas.

La idea principal es separar las funciones básicas del sistema de las políticas de cómo funciona. Por ejemplo, si un programa necesita leer o escribir datos, un "servidor" en el espacio del usuario (fuera del núcleo) puede manejarlo. Si uno de estos servidores falla, el sistema completo no se detiene, y ese módulo puede reiniciarse sin afectar al resto. Sin embargo, esta separación puede hacer que la comunicación entre módulos sea un poco más lenta.

Algunos ejemplos de sistemas que usan micronúcleos son Minix y QNX.

Núcleos monolíticos vs. micronúcleos

A menudo, los núcleos monolíticos son preferidos porque son más sencillos de manejar, ya que todo el código de control del sistema está en un solo lugar. Por ejemplo, XNU, el núcleo de Mac OS X, combina un micronúcleo con código de FreeBSD para ser más rápido.

A principios de los años 90, se pensaba que los núcleos monolíticos estaban pasados de moda. Hubo un famoso debate entre Linus Torvalds (creador de Linux) y Andrew Tanenbaum sobre si Linux debía ser monolítico o un micronúcleo. Ambos tipos tienen sus ventajas.

Los núcleos monolíticos suelen ser más fáciles de diseñar y pueden crecer más rápido. Los micronúcleos se usan a menudo en robótica o en computadoras médicas, porque la mayoría de los componentes del sistema operativo están en su propio espacio de memoria protegido. Esto es importante para la seguridad y la estabilidad.

QNX es un sistema operativo con un diseño de micronúcleo muy minimalista que se ha usado con éxito en situaciones donde no se pueden permitir fallos de software, como en brazos robóticos en naves espaciales.

Núcleos híbridos: lo mejor de ambos mundos

Los núcleos híbridos son básicamente micronúcleos que tienen algo de código "no esencial" dentro del núcleo para que se ejecute más rápido. Esto fue una solución que muchos desarrolladores adoptaron para mejorar el rendimiento de los primeros sistemas basados en micronúcleos.

La mayoría de los sistemas operativos modernos entran en esta categoría, siendo el más conocido Microsoft Windows. XNU, el núcleo de Mac OS X, también es un núcleo híbrido.

Es importante no confundir los núcleos híbridos con los núcleos monolíticos que pueden cargar módulos después de iniciarse. "Híbrido" significa que el núcleo combina ideas de los diseños monolíticos y de micronúcleos, como el envío de mensajes entre partes y mantener algo de código "no esencial" dentro del núcleo para mejorar la velocidad.

Exonúcleos: control total para las aplicaciones

Archivo:Kernel-exo
Esquema de la interacción entre un exonúcleo y el software a través de bibliotecas.

Los exonúcleos son una forma muy diferente de diseñar sistemas operativos. La idea principal es dar a los programadores de aplicaciones el control total sobre cómo se usa el hardware.

Los exonúcleos son extremadamente pequeños porque su única función es proteger y compartir los recursos del hardware. Se llaman así porque la mayoría de las funciones no están dentro del núcleo, sino en "bibliotecas" externas.

En los sistemas operativos clásicos, el núcleo esconde el hardware detrás de una capa de abstracción. Por ejemplo, si un programa pide memoria, no sabe exactamente dónde está esa memoria física. En un exonúcleo, una aplicación puede pedir una parte específica de la memoria o un bloque de disco concreto, y el exonúcleo solo se asegura de que esos recursos estén disponibles y que el programa tenga permiso para usarlos.

Como el exonúcleo solo ofrece una interfaz muy básica al hardware, se complementa con una "biblioteca de sistema operativo". Esta biblioteca se comunica con el exonúcleo y ofrece a los programadores las funciones que son comunes en otros sistemas operativos.

Una de las ideas interesantes de los exonúcleos es que se podrían ejecutar diferentes tipos de sistemas operativos (como Windows o Unix) sobre un solo exonúcleo. Actualmente, los diseños de exonúcleos están principalmente en fase de estudio y no se usan en sistemas populares.

Véase también

Galería de imágenes

kids search engine
Núcleo (informática) para Niños. Enciclopedia Kiddle.