XNU

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

XNU (X no es Unix) es el kernel del sistema operativo (OS) de 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 sistema operativo Darwin, que además de macOS también es la base del software Apple TV, iOS, iPadOS, watchOS, visionOS y tvOS. XNU es una abreviatura de X no es Unix.

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, que incorporaba la mayor parte del kernel 4.3BSD modificado para ejecutarse sobre primitivas Mach, junto con una interfaz de programación de aplicaciones (API) en Objective-C para escribir controladores denominada Driver Kit.

Después de que Apple adquirió NeXT, el kernel se actualizó con código derivado de OSFMK 7.3 de OSF y el proyecto FreeBSD, y el kit de controladores se reemplazó con una nueva API en un subconjunto restringido de C++ (basado en Embedded C++) llamado I/ Oh Kit.

Diseño del núcleo

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 conservar la velocidad de los núcleos monolíticos para algunas tareas críticas.

A partir de 2021, XNU se ejecuta en procesadores ARM64 y x86-64, tanto modelos de un procesador como de multiprocesamiento simétrico (SMP). La compatibilidad con PowerPC se eliminó a partir de la versión de Mac OS X Snow Leopard. La compatibilidad con IA-32 se eliminó a partir de la versión en Mac OS X Lion; La compatibilidad con ARM de 32 bits se eliminó a partir de la versión en iOS 11.

Mach

La base del kernel de XNU es un kernel de Open Software Foundation Mach altamente modificado (OSFMK) 7.3. OSFMK 7.3 es un microcarne que incluye el código aplicable del kernel de la Universidad de Utah Mach 4 y de las muchas variantes Mach 3.0 preseleccionadas del microcarnegie Mellon University Mach 3.0 original.

OSFMK 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 por encima del núcleo Mach), pero esto a menudo reduce el rendimiento debido al consumo de tiempo del núcleo. Cambios de contexto en el modo /usuario y gastos generales derivados del mapeo o copia de mensajes entre los espacios de direcciones del kernel y los de los demonios de servicio.

Apple obtuvo la licencia OSFMK 7.3 de OSF e intentó simplificar algunas tareas integrando funciones BSD en el kernel junto con el código Mach. El resultado es un kernel OSFMK 7.3 muy modificado (híbrido).

BSD

La parte del kernel de Berkeley Software Distribution (BSD) proporciona la interfaz de programación de aplicaciones (API, llamadas al sistema BSD) de la interfaz del sistema operativo portátil (POSIX), 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 de 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 Apple (APFS), el cliente y servidor del Network File System (NFS), el marco criptográfico, la comunicación entre procesos (IPC) del Sistema UNIX V, el subsistema de auditoría, el control de acceso obligatorio y algunas de las primitivas de bloqueo. El código BSD presente en XNU se ha sincronizado más recientemente con el del kernel FreeBSD. Aunque gran parte se ha modificado significativamente, el código compartido todavía se produce entre Apple y el Proyecto FreeBSD a partir de 2009.

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 . K32 puede ejecutar aplicaciones de 64 bits en el espacio de usuario. La novedad de 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 a partir de 2008 y puede ejecutar aplicaciones de 64 bits. K64 tiene varios beneficios en comparación con K32:

  • 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 del búfer de caché pueden ser más grandes que lo que permite el espacio del kernel de 32 bits, lo que puede aumentar el rendimiento de I/O.
  • El rendimiento se aumenta al utilizar dispositivos de red de alto rendimiento o múltiples unidades de procesamiento de gráficos (GPU), ya que el núcleo puede mapear todos los dispositivos en espacio de 64 bits, incluso si varios tienen un acceso directo a la memoria muy grande (DMA).

Arrancar mientras se mantienen presionados 6 y 4 fuerza a la máquina a iniciar K64 en máquinas que admiten kernels de 64 bits. 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 posteriores solo proporciona un kernel de 64 bits.

Kit de E/S

El kit de E/S es el marco del controlador de dispositivos, escrito en un subconjunto de C++ basado en Embedded C++. Utilizando su diseño orientado a objetos, se proporcionan dentro del marco características comunes a cualquier clase de controlador, lo que ayuda a que los controladores de dispositivos se escriban en menos tiempo y código. El kit de E/S es multiproceso, seguro para multiprocesamiento simétrico (SMP) y permite dispositivos conectables en caliente y una configuración automática y dinámica de dispositivos.

Muchos controladores se pueden escribir para ejecutarse 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 del kernel falla, el kernel fallará. Ejemplos de controladores de espacio de kernel incluyen controladores de adaptador de disco y de red, controladores de gráficos, controladores para Universal Serial Bus (USB) y controladores de host FireWire, y controladores para software de máquinas virtuales como VirtualBox, Parallels Desktop para Mac y VMware Fusion.

Contenido relacionado

Tarjeta perforada

Una tarjeta perforada es un trozo de papel rígido que contiene datos digitales representados por la presencia o ausencia de agujeros en posiciones...

CPython

CPython es la implementación de referencia del lenguaje de programación Python. Escrito en C y Python, CPython es la implementación predeterminada y más...

Arquitectura Harvard

La Arquitectura Harvard es un modelo de arquitectura informática que separa físicamente la memoria de código de programa de la memoria de almacenamiento de...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save