En informática, el núcleo o kernel es la parte fundamental de un sistema operativo. La mayoría de los sistemas operativos se construyen en torno al concepto de núcleo. Acceder al hardware directamente puede ser realmente complejo, por lo que los núcleos suelen implementar una serie de abstracciones del hardware. Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware lo que facilita su uso para el usuario.
En informática, el núcleo de un sistema operativo, es el programa informático formado por un conjunto de subrutinas o módulos de programa que permiten algunas de las siguientes funcionalidades:
- La comunicación entre los programas informáticos y el hardware. Responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma más básica
- Gestión de las distintas tareas o procesos de una máquina. Como hay muchos programas y el acceso al hardware es limitado, el núcleo también se encarga de decidir qué programa podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo.
- Gestión del hardware (memoria, procesador, periférico, forma de almacenamiento, etc.). Es el encargado de gestionar recursos, a través de servicios de llamada al sistema.
- Los núcleos garantizan la carga y la ejecución de los procesos mediante el módulo llamado cargador responsable de cargar programas en memoria, se carga al iniciar el sistema y permanece en memoria hasta que el sistema se apaga. Los enlazadores dinámicos son otro tipo de cargador que carga y liga librerías dinámicas (archivos con extensión dll o so).
Una clasificación de los núcleos según las abstracciones que presentan con el hardware (conjunto de reglas o instrucciones que son comunes a todos los dispositivos de un cierto tipo) puede ser:
- Los núcleos monolíticos se encargan del manejo de las IRQ, memoria, dispositivos E/S, de las llamadas al sistema, manejo de archivos y planificación de procesos. Los núcleos monolíticos suelen ser más fáciles de diseñar correctamente, y por lo tanto pueden crecer más rápidamente. Los micronúcleos suelen usarse en robótica embebida o computadoras médicas, ya que la mayoría de los componentes del sistema operativo residen en su propio espacio de memoria privado y protegido. Ejemplos de núcleos: Mach, Pistachio.
- Los micronúcleos o microkernel se encargan de manejo de procesos y threads, manejo de memoria, comunicaciones, operaciones juanjo. cc pd. Procedenciabajo nivel E/S. El resto de los servicios, como manejo de archivos, utilizan al núcleo por medio de las comunicaciones. Se usan para las aplicaciones llamadas servidores para ofrecer mayor funcionalidad. Debido a la existencia de módulos independientes (threads ) se originan retardos en la comunicación por la copia de variables que se realiza en la comunicación entre módulos. Los usos más comunes de los micronúcleos es en los sistemas operativos que intentan ser distribuídos, y en aquellos que sirven como base para instalar sobre ellos otros sistemas operativos Algunos ejemplos son: Mac OS, BeOS, Minix.
- Los núcleos híbridos o micronúcleos modificados ya que incluyen código adicional en el espacio de núcleo para que se ejecute más rápidamente. Algunos de los S.O. actuales pertenecen a esta categoría. Algunos ejemplos de núcleos: Microsoft Windows NT, XNU, DragonFlyBSD.
- Los exonúcleos permiten el uso de bibliotecas que proporcionan mayor funcionalidad gracias al acceso directo o casi directo al hardware. Representan una aproximación radicalmente nueva al diseño de sistemas operativos. Son extremadamente pequeños, el desarrollador tome todas las decisiones relativas al rendimiento del hardware. Toda la funcionalidad deja de estar residente en memoria y pasa a estar fuera, en bibliotecas dinámicas que se cargan en memoria según se necesiten. Actualmente, los diseños exonúcleo están fundamentalmente en fase de estudio y no se usan en ningún sistema popular.