XNU ("X is Not Unix") es el núcleo del sistema operativo (SO) desarrollado en Apple Inc. desde diciembre de 1996 para su uso en el sistema operativo Mac OS X (ahora macOS ) y publicado como software libre y de código abierto como parte del sistema operativo Darwin , que, además de ser la base de macOS, también es la base de iOS , iPadOS , watchOS , visionOS y tvOS . [ 2 ]
XNU fue desarrollado originalmente por NeXT para el sistema operativo NeXTSTEP . Era un núcleo híbrido derivado de la versión 2.5 del núcleo Mach , desarrollado en la Universidad Carnegie Mellon , que incorporaba la mayor parte del núcleo 4.3BSD modificado para ejecutarse sobre primitivas Mach, junto con una interfaz de programación de aplicaciones (API) en Objective-C para escribir controladores llamada DriverKit. [ 3 ]
Después de que Apple adquirió NeXT, el kernel se actualizó con código derivado de OSF MK 7.3 de OSF , [ 4 ] y del proyecto FreeBSD , y DriverKit fue reemplazado con una nueva API en un subconjunto restringido de C++ [ 5 ] (basado en Embedded C++ ) [ 6 ] llamado IOKit.
macOS obtuvo la certificación UNIX en 2007 con el lanzamiento de Mac OS X 10.5 Leopard [ 7 ] bajo la Especificación UNIX Única (SUS) de The Open Group. [ 8 ] A pesar de esto, Apple conservó el nombre original "XNU", que significa "X no es Unix", una reliquia de sus orígenes NeXTSTEP antes de que macOS obtuviera la certificación UNIX. Esto ha generado confusión, ya que el nombre sugiere que XNU es independiente de UNIX, aunque macOS, en su conjunto, está oficialmente reconocido como un sistema operativo UNIX. [ 1 ]
Diseño del núcleo
XNU es un núcleo híbrido , que contiene características tanto de núcleos monolíticos como de micronúcleos . [ 9 ]
A partir de julio de 2026 XNU se ejecuta en procesadores ARM64 y x86-64 . La compatibilidad con PowerPC se eliminó a partir del kernel de Mac OS X Snow Leopard . La compatibilidad con IA-32 se eliminó a partir del kernel de Mac OS X Lion ; la compatibilidad con ARM de 32 bits se eliminó a partir de iOS 11. La compatibilidad con x86-64 se eliminó a partir del kernel de macOS Golden Gate , pero permanece en el kernel de la versión actual, macOS Tahoe .
Mach
La base del kernel XNU es un kernel Mach de la Open Software Foundation ( OSF MK ) 7.3 modificado (híbrido). [ 4 ] OSF MK 7.3 es un microkernel [ 10 ] que incluye código aplicable del kernel Mach 4 de la Universidad de Utah y de las muchas variantes de Mach 3.0 derivadas del microkernel Mach 3.0 original de la Universidad Carnegie Mellon .
XNU no utiliza Mach como microkernel, sino que incluye otros subsistemas (como el de BSD ) como parte del kernel, en lugar de como demonios en el espacio de usuario . Mach en XNU se utiliza para gestionar la memoria virtual , facilitar la comunicación entre procesos (IPC) y realizar operaciones de entrada/salida (E/S) con la consola. [ 11 ]
OSF MK 7.3 es capaz de ejecutar el núcleo de un sistema operativo como procesos separados, lo que permite una gran flexibilidad (podría ejecutar varios sistemas operativos en paralelo sobre el núcleo Mach), pero esto a menudo reduce el rendimiento debido a los cambios de contexto entre el modo kernel y el modo usuario, que consumen mucho tiempo, y a la sobrecarga derivada de la asignación o copia de mensajes entre los espacios de direcciones del kernel y los de los demonios de servicio.
Apple obtuvo la licencia de OSF MK 7.3 de la OSF e intentó simplificar algunas tareas integrando funciones BSD en el núcleo junto con el código Mach. El resultado es un núcleo OSF MK 7.3 híbrido (considerablemente modificado).
BSD
La parte del núcleo de Berkeley Software Distribution (BSD) proporciona la interfaz de programación de aplicaciones (API, llamadas al sistema BSD ) Portable Operating System Interface ( POSIX ), el modelo de procesos Unix sobre tareas Mach, políticas de seguridad básicas, identificadores de usuario y grupo, permisos, la pila de protocolos de red (protocolos), el código del sistema de archivos virtual (incluida una capa de registro independiente del sistema de archivos ), varios sistemas de archivos locales como Hierarchical File System (HFS, HFS Plus (HFS+)) y Apple File System (APFS), el cliente y servidor de Network File System (NFS), el marco criptográfico, la comunicación entre procesos (IPC) de UNIX System V , el subsistema de auditoría, el control de acceso obligatorio y algunas de las primitivas de bloqueo. [ 12 ] El código BSD presente en XNU se ha sincronizado recientemente con el del núcleo FreeBSD . Aunque gran parte de él se ha modificado significativamente, todavía se comparte código entre Apple y el proyecto FreeBSD a partir de 2009.. [ 13 ] Lo primero que sucede después de que Mach inicializa BSD es la inicialización de la asignación de memoria . [ 14 ]
K32/K64
XNU en Mac OS X Snow Leopard , v10.6, ( versión Darwin 10) viene en dos variedades, una versión de 32 bits llamada K32 y una versión de 64 bits llamada K64 . [ 15 ] K32 puede ejecutar aplicaciones de 64 bits en el espacio de usuario . [ 16 ] Lo nuevo en Mac OS X 10.6 fue la capacidad de ejecutar XNU en el espacio del kernel de 64 bits . K32 era el kernel predeterminado para 10.6 Server cuando se usaba en todas las máquinas excepto Mac Pro y los modelos Xserve de 2008 en adelante [ 17 ] y puede ejecutar aplicaciones de 64 bits. K64 tiene varias ventajas en comparación con K32: [ 18 ]
- Puede gestionar más de 32 GB de RAM, ya que el mapa de memoria consumiría una superficie desproporcionadamente grande del espacio del kernel de 32 bits.
- El tamaño del búfer de caché puede ser mayor que el que permite el espacio del kernel de 32 bits, lo que podría aumentar el rendimiento de E/S.
- El rendimiento aumenta al utilizar dispositivos de red de alto rendimiento o varias unidades de procesamiento gráfico (GPU), ya que el núcleo puede asignar todos los dispositivos en un espacio de 64 bits, incluso si varios tienen búferes de acceso directo a memoria (DMA) muy grandes.
Al arrancar manteniendo pulsados los botones 6 y 4, se fuerza a la máquina a arrancar K64 en máquinas que admiten núcleos de 64 bits. [ 19 ] K64 ejecutará aplicaciones de 32 bits, pero no ejecutará extensiones de núcleo de 32 bits (KEXT), por lo que estas deben portarse a K64 para poder cargarse.
XNU en OS X Mountain Lion (10.8) y versiones posteriores solo proporciona un núcleo de 64 bits.
IOKit
IOKit es el marco de trabajo para controladores de dispositivos , escrito en un subconjunto de C++ basado en Embedded C++ que carece de características como excepciones , herencia múltiple y plantillas . [ 6 ] Gracias a su diseño orientado a objetos , el marco de trabajo proporciona características comunes a cualquier clase de controlador, lo que ayuda a escribir controladores de dispositivos en menos tiempo y con menos código. IOKit es multihilo, seguro para multiprocesamiento simétrico (SMP) y permite la conexión en caliente de dispositivos y la configuración automática y dinámica de los mismos.
Muchos controladores pueden escribirse para ejecutarse en modo usuario , lo que mejora aún más la estabilidad del sistema. Si un controlador que se ejecuta en modo usuario falla, no provocará un fallo en el kernel. Sin embargo, si un controlador que se ejecuta en modo kernel falla, sí provocará un fallo en el kernel. Algunos ejemplos de controladores que se ejecutan en modo kernel incluyen controladores de adaptadores de disco y de red, controladores gráficos, controladores para controladores de host USB y FireWire , y controladores para software de máquinas virtuales como VirtualBox , Parallels Desktop para Mac y VMware Fusion . En macOS Catalina y versiones posteriores, DriverKit permite que algunos de estos tipos de controladores se ejecuten en modo usuario. [ 20 ]
Véase también
- Núcleo (sistema operativo)
- A/UX
- mkLinux
- OSF/1
- Darwin (sistema operativo) : sistema operativo de código abierto lanzado por Apple, Inc., con XNU como núcleo.
- macOS : sistema operativo lanzado por Apple, Inc., con XNU como núcleo.
Referencias
- 1 2 "Marca Abierta" .
- ↑ "Portando aplicaciones UNIX/Linux a Mac OS X: Glosario" . Apple Computer. 2005. Consultado el 7 de junio de 2017 .
- ↑ "XNU GitHub código fuente README" . GitHub . 16 de diciembre de 2021.
- 1 2 Magee, Jim. Sesión 106 de la WWDC 2000: Mac OS X: Núcleo . Minuto 14. Archivado del original el 21 de diciembre de 2021.
- ↑ "El entorno de ejecución C++ de libkern" . Directrices de diseño de controladores de dispositivos IOKit .
- 1 2 Amit Singh. "XNU: El núcleo" . ¿Qué es Mac OS X? I/O Kit. Archivado del original el 19 de abril de 2019. Recuperado el 9 de septiembre de 2011.
I/O Kit utiliza un subconjunto restringido de C++
. - ↑ "Marca Abierta" . www.opengroup.org .
- ↑ McKay, Dave (21 de octubre de 2019). "¿Es macOS UNIX? (¿Y qué significa eso?)" . How-To Geek . Consultado el 12 de marzo de 2025 .
- ↑ "Llamamos a esto 'paseos por el kernel': cómo Apple reorganizó su núcleo XNU con exclaves" . The Register . 8 de marzo de 2025.
- ↑ Wells, Douglas M. (1994). Un entorno de sistema operativo confiable, escalable y en tiempo real (PDF) . Conferencia IEEE de Tecnologías y Aplicaciones de Doble Uso de 1994. S2CID 5205380. Archivado del original (PDF) el 22 de agosto de 2017.
- ↑ Amit Singh. "XNU: El núcleo" . ¿Qué es Mac OS X? Mach. Archivado del original el 19 de abril de 2019. Recuperado el 9 de septiembre de 2011 .
- ↑ Watson, Robert (2 de agosto de 2008). "Re: freebsd-advocacy Digest, Vol. 248, Número 1" . freebsd-advocacy (Lista de correo) . Recuperado el 24 de octubre de 2013 .
- ↑ "Informe trimestral sobre el estado de FreeBSD (Grand Central Dispatch – Puerto FreeBSD)" . Abril de 2009. Consultado el 24 de octubre de 2013 .
- ↑ Amit Singh. "XNU: El núcleo" . ¿Qué es Mac OS X? BSD. Archivado del original el 19 de abril de 2019. Consultado el 9 de septiembre de 2011 .
- ↑ Mac OS X 10.6 Snow Leopard: la reseña de Ars Technica, página 5
- ↑ Siracusa, John (31 de agosto de 2009). "Mac OS X 10.6 Snow Leopard: la reseña de Ars Technica" . Ars Technica .
Por último, vale la pena repetirlo: tenga en cuenta que no necesita ejecutar el kernel de 64 bits para ejecutar aplicaciones de 64 bits o instalar más de 4 GB de RAM en su Mac. Las aplicaciones funcionan perfectamente en modo de 64 bits sobre el kernel de 32 bits, e incluso en versiones anteriores de Mac OS X era posible instalar y aprovechar mucho más de 4 GB de RAM.
- ↑ Mac OS X Server v10.6: Macs que utilizan el kernel de 64 bits
- ↑ "Novedades de Mac OS X: Mac OS X v10.6" . Apple Developer . Apple, Inc.
- ↑ Mac OS X Server v10.6: Inicio con el kernel de 32 o 64 bits
- ↑ "DriverKit" . Desarrollador de Apple .
Enlaces externos
- xnu en GitHub , repositorio oficial
- XNU: El núcleo en la Wayback Machine (archivado el 2 de junio de 2020) – una descripción general de los componentes de XNU, escrita por Amit Singh en diciembre de 2003.
- Dentro del núcleo de Mac OS X : "Esta charla pretende aclarar la confusión presentando detalles del núcleo de Mac OS X" (diciembre de 2007).
- iOS
- Mach (núcleo)
- núcleos monolíticos
- macOS
- Software que utiliza la Licencia de Código Público de Apple.