XNU
# XNU

XNU es un núcleo o kernel desarrollado originalmente por NeXT e implementado por Apple Inc. en 1996 en su sistema operativo macOS. XNU es el acrónimo de "X is Not Unix". Fue liberado como software libre y de código abierto como parte del sistema operativo Darwin. Es un núcleo híbrido, lo que significa que su arquitectura de diseño es una combinación de arquitecturas basadas en núcleo monolítico y micronúcleo. Está basado en Mach 3.0 (desarrollado en la Universidad Carnegie Mellon en 1980) y el código BSD, en especial de FreeBSD 5.x y usa I/O Kit, un framework de controlador de dispositivos orientado a objetos que hace de XNU un núcleo diferente al de los sistemas tradicionales.

## Diseño

Como algunos núcleos modernos, XNU tiene una funcionalidad equivalente a un núcleo híbrido y tiene características tanto de los núcleos monolíticos como de los micronúcleos. Intenta hacer un mejor uso de las dos tecnologías, como la capacidad de pasar mensajes de los micronúcleos, permitiendo una mayor modularidad y que grandes porciones del SO se beneficien de la protección de memoria. Asimismo, permite mantener la velocidad de los núcleos monolíticos para desempeñar determinadas tareas.

Actualmente, XNU funciona en procesadores basados en ARM, x86, x86-64 y PowerPC, tanto en modelos de un único procesador como modelos SMP.

### Mach

El corazón de XNU, Mach, fue originalmente concebido como un micronúcleo. Como tal, es capaz de hacer funcionar la base de un sistema operativo como procesos separados, lo que permite una mayor flexibilidad (se podrían ejecutar varios sistemas operativos en paralelo sobre la base de Mach), pero a menudo reduce el rendimiento debido al tiempo consumido para cambiar del contexto núcleo al contexto usuario, y al trabajo que se deriva de mapear o copiar mensajes entre el espacio de direcciones del micronúcleo y el de los demonios de servicios. Con Mac OS X, los diseñadores han intentado hacer más sencillas algunas tareas, y las funcionalidades de BSD se han implementado en espacio privilegiado junto con Mach. El resultado es una combinación de Mach y un clásico núcleo BSD, con algunas ventajas y desventajas de ambos.

GNU Hurd también hace uso de Mach, sin embargo toda la funcionalidad aparte de Mach que XNU implementa en espacio privilegiado, Hurd lo hace en espacio de usuario (los servidores o [daemon|demonios]) junto con la biblioteca de tiempo de ejecución (la biblioteca del lenguaje C). GNU Hurd es fiel a un diseño de micronúcleo.

