XNU es el kernel del sistema operativo (SO) de la computadora desarrollado en Apple Inc. desde diciembre de 1996 para su uso en el sistema operativo Mac OS X (ahora macOS ) y lanzado como software gratuito y de código abierto como parte del SO Darwin , que es el base para el software Apple TV , iOS , iPadOS , watchOS y tvOS OS. XNU es una abreviatura de X no es Unix . [1]
Desarrollador | Apple Inc. |
---|---|
Escrito en | C , C ++ |
Familia OS | Tipo Unix , Unix |
Estado de trabajo | Actual |
Modelo fuente | Fuente abierta |
Versión inicial | Diciembre de 1996 |
Repositorio | |
Disponible en | Ingles, otros |
Plataformas | Actual: x86-64 , ARM de 64 bits , ARM de 32 bits (la compatibilidad con ARM de 32 bits es de código cerrado) Histórico: PowerPC (32 y 64 bits), IA-32 |
Tipo de grano | Híbrido |
Licencia | Licencia de fuente pública de Apple 2.0 |
Precedido por | Mach , Nukernel |
Página web oficial | código |
Desarrollado originalmente por NeXT para el sistema operativo NeXTSTEP , XNU era un kernel híbrido derivado de la versión 2.5 del kernel Mach desarrollado en la Universidad Carnegie Mellon , descendiente de 4.3BSD e incorporando la mayor parte del kernel 4.3BSD, con una programación de aplicaciones interfaz (API) en Objective-C para escribir controladores denominados Driver Kit. [2]
Después de que Apple adquirió NeXT, el kernel se actualizó con código derivado de OSFMK 7.3 de OSF , [3] y el proyecto FreeBSD , y el kit de controladores se reemplazó por una API de C ++ para escribir controladores denominada I / O Kit. [ cita requerida ]
Diseño de kernel
XNU es un kernel híbrido , que contiene características de kernels monolíticos y microkernels , que intenta hacer el mejor uso de ambas tecnologías, como la capacidad de transmisión de mensajes de los microkernels, lo que permite una mayor modularidad y porciones más grandes del sistema operativo para beneficiarse de la protección de la memoria y la retención la velocidad de los núcleos monolíticos para algunas tareas críticas.
A partir de 2021[actualizar], XNU se ejecuta en procesadores ARM64 y x86-64 , tanto en modelos de un procesador como de multiprocesamiento simétrico (SMP). La compatibilidad con PowerPC se eliminó a partir de la versión en Mac OS X 10.6 . La compatibilidad con IA-32 se eliminó a partir de la versión en Mac OS X 10.7 ; La compatibilidad con ARM de 32 bits se eliminó a partir de la versión en iOS 11 .
Mach
La base del kernel XNU es un kernel de Open Software Foundation Mach ( OSFMK ) 7.3 muy modificado (híbrido) . [3] Como tal, 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 por encima del núcleo de Mach), pero esto a menudo reduce el rendimiento debido al tiempo. consumiendo cambios de contexto de modo de kernel / usuario y sobrecarga derivada de mapear o copiar mensajes entre los espacios de direcciones del kernel y los de los demonios de servicio. Con macOS , los diseñadores han intentado simplificar algunas tareas y, por lo tanto, las funciones BSD se integraron en el núcleo con Mach. El resultado es un kernel OSFMK 7.3 fuertemente modificado (híbrido), OSFMK 7.3 con licencia de Apple, que es un microkernel, [4] de OSF. OSFMK 7.3 incluye código aplicable del kernel Mach 4 de la Universidad de Utah y de las muchas variantes Mach 3.0 bifurcadas del microkernel Mach 3.0 original de la Universidad Carnegie Mellon .
BSD
La parte Berkeley Software Distribution (BSD) del kernel proporciona la interfaz de programación de aplicaciones de la Interfaz de sistema operativo portátil ( POSIX ) (API, llamadas al sistema BSD), el modelo de proceso Unix sobre las tareas de Mach, políticas de seguridad básicas, identificaciones de usuarios y grupos, permisos, la pila de protocolos de red (protocolos), el código del sistema de archivos virtual (incluida una capa de registro en diario independiente del sistema de archivos ), varios sistemas de archivos locales como el sistema de archivos jerárquico (HFS, HFS Plus (HFS +)) y el sistema de archivos de Apple (APFS), el Cliente y servidor de Network File System (NFS), marco criptográfico, comunicación entre procesos (IPC) de UNIX System V , subsistema de auditoría, control de acceso obligatorio y algunas de las primitivas de bloqueo. [5] El código BSD presente en XNU se ha sincronizado más recientemente con el del kernel de FreeBSD . Aunque gran parte de él ha sido modificado significativamente, el código compartido todavía ocurre entre Apple y el Proyecto FreeBSD a partir de 2009. [actualizar]. [6]
K32 / K64
XNU en Mac OS X Snow Leopard , v10.6, ( Darwin versión 10) viene en dos variedades, una versión de 32 bits llamada K32 y una versión de 64 bits llamada K64 . [7] K32 puede ejecutar aplicaciones de 64 bits en el área de usuario . [8] Lo nuevo en Mac OS X 10.6 fue la capacidad de ejecutar XNU en un espacio de kernel de 64 bits . K32 era el kernel predeterminado para 10.6 Server cuando se usaba en todas las máquinas excepto en los modelos Mac Pro y Xserve desde 2008 en adelante [9] y puede ejecutar aplicaciones de 64 bits. K64 tiene varios beneficios en comparación con K32: [10]
- Puede administrar más de 32 GB de RAM, ya que el mapa de memoria consumiría un área desproporcionadamente grande del espacio del kernel de 32 bits.
- Los tamaños de búfer de caché pueden ser mayores de lo que permite el espacio del kernel de 32 bits, lo que puede aumentar el rendimiento de E / S.
- El rendimiento aumenta cuando se utilizan dispositivos de red de alto rendimiento o varias unidades de procesamiento de gráficos (GPU), ya que el kernel puede mapear todos los dispositivos en un espacio de 64 bits, incluso si varios tienen búferes de acceso directo a memoria (DMA) muy grandes .
Arrancar mientras mantiene presionados 6 y 4 fuerza a la máquina a arrancar K64 en máquinas que soportan kernels de 64 bits. [11] K64 ejecutará aplicaciones de 32 bits, pero no ejecutará extensiones de kernel de 32 bits (KEXT), por lo que deben trasladarse a K64 para poder cargar.
XNU en OS X Mountain Lion , v10.8 y versiones posteriores solo proporciona un kernel de 64 bits.
Kit de E / S
I / O Kit es el marco del controlador de dispositivo , escrito en un subconjunto de C ++ basado en Embedded C ++ . [12] Utilizando su diseño orientado a objetos , se proporcionan características comunes a cualquier clase de controlador dentro del marco, lo que ayuda a que los controladores de dispositivos se escriban en menos tiempo y código. El kit de E / S es seguro para multiprocesamiento simétrico (SMP) de múltiples subprocesos y permite la configuración dinámica y automática de dispositivos conectables en caliente.
Se pueden escribir muchos controladores para que se ejecuten desde el espacio del usuario , lo que mejora aún más la estabilidad del sistema. Si un controlador de espacio de usuario falla, no bloqueará el kernel. Sin embargo, si un controlador de espacio de kernel falla, bloqueará el kernel. Algunos ejemplos de controladores de espacio de kernel incluyen adaptadores de disco y controladores de adaptadores de red, controladores de gráficos, controladores para controladores de host de bus serie universal ( USB ) y FireWire , y controladores para software de máquinas virtuales como VirtualBox , Parallels Desktop para Mac y VMware Fusion .
Ver también
- Kernel (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 kernel
Referencias
- Loepere, Keith. "MK ++: un microkernel de alto rendimiento y alta seguridad" .
- ^ "Portar aplicaciones UNIX / Linux a Mac OS X: Glosario" . Computadora Apple. 2005 . Consultado el 7 de junio de 2017 .
- ^ "README del código fuente de XNU GitHub" .
- ^ a b Magee, Jim. WWDC 2000 Sesión 106 - Mac OS X: Kernel . 14 minutos en.
- ^ Wells, Douglas M. "Un entorno de sistema operativo confiable, escalable y en tiempo real" (PDF) . Académico semántico . Instituto Allen de IA (AI2). S2CID 5205380 . Archivado desde el original (PDF) el 22 de agosto de 2017.
- ^ Watson, Robert (2 de agosto de 2008). "Re: resumen de freebsd-advocacy, vol. 248, número 1" . freebsd-advocacy (lista de correo) . Consultado el 24 de octubre de 2013 .
- ^ "Informe de estado trimestral de FreeBSD (Grand Central Dispatch - puerto FreeBSD)" . Abril de 2009 . Consultado el 24 de octubre de 2013 .
- ^ Mac OS X 10.6 Snow Leopard: la revisión de Ars Technica, página 5
- ^ Siracusa, John (31 de agosto de 2009). "Mac OS X 10.6 Snow Leopard: la revisión de Ars Technica" . Ars Technica .
Finalmente, vale la pena repetir esto: 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 bien en modo de 64 bits sobre el kernel de 32 bits, e incluso en versiones anteriores de Mac OS X es posible instalar y aprovechar mucho más de 4 GB de RAM.
- ^ Mac OS X Server v10.6: Mac que utilizan el kernel de 64 bits
- ^ "Novedades de Mac OS X: Mac OS X v10.6" . Desarrollador de Apple . Apple Inc.
- ^ Mac OS X Server v10.6: inicio con el kernel de 32 o 64 bits
- ^ I / O Kit utiliza un subconjunto restringido de C ++
enlaces externos
- Sitio web oficial , en Apple Open Source Browser
- darwin-xnu en GitHub , espejo oficial
- XNU: The Kernel at the Wayback Machine (archivado el 2 de junio de 2020): una descripción general de los componentes de XNU, escrito por Amit Singh en diciembre de 2003
- Dentro del kernel de Mac OS X - "Esta charla tiene la intención de aclarar la confusión al presentar detalles del kernel de Mac OS X"