stringtranslate.com

XNU

XNU ("X is Not Unix") es el núcleo del sistema operativo (SO) de computadora 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 Apple TV Software , iOS , iPadOS , watchOS , visionOS y tvOS . [1]

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. [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 DriverKit fue reemplazado con una nueva API en un subconjunto restringido de C++ [4] (basado en Embedded C++ ) [5] llamado IOKit.

Diseño del núcleo

XNU es un kernel híbrido , que contiene características tanto de los kernels monolíticos como de los microkernels , intentando hacer el mejor uso de ambas tecnologías, como la capacidad de paso de mensajes de los microkernels permitiendo una mayor modularidad y que porciones más grandes del sistema operativo se beneficien de la protección de la memoria , y conservando la velocidad de los kernels monolíticos para algunas tareas críticas.

A partir de 2021 , 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 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 XNU es un kernel Mach 7.3 de Open Software Foundation ( OSFMK ) muy modificado (híbrido). [3] OSFMK 7.3 es un microkernel [6] que incluye código aplicable del kernel Mach 4 de la Universidad de Utah y de las muchas variantes de Mach 3.0 bifurcadas del microkernel Mach 3.0 original de la Universidad Carnegie Mellon .

OSFMK 7.3 puede 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 [ cita requerida ] debido a los cambios de contexto del modo kernel/usuario que consumen mucho tiempo y la sobrecarga derivada del mapeo o copia de mensajes entre los espacios de direcciones del kernel y los de los daemons de servicio.

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

BSD

La parte del núcleo de Berkeley Software Distribution (BSD) proporciona la interfaz de programación de aplicaciones (API, llamadas al sistema BSD ) de Portable Operating System Interface ( POSIX ) , el modelo de proceso 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 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. [7] El código BSD presente en XNU se ha sincronizado recientemente con el del núcleo de 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. [ 8]

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 . [9] K32 puede ejecutar aplicaciones de 64 bits en el espacio de usuario . [10] Lo nuevo en Mac OS X 10.6 fue la capacidad de ejecutar XNU en el espacio del kernel de 64 bits . K32 fue el kernel predeterminado para 10.6 Server cuando se usó en todas las máquinas excepto los modelos Mac Pro y Xserve desde 2008 en adelante [11] y puede ejecutar aplicaciones de 64 bits. K64 tiene varios beneficios en comparación con K32: [12]

Al arrancar manteniendo presionadas las teclas 6 y 4, se fuerza a la máquina a arrancar K64 en máquinas que admitan núcleos de 64 bits. [13] K64 ejecutará aplicaciones de 32 bits, pero no ejecutará extensiones de núcleo de 32 bits (KEXT), por lo que estas deben trasladarse a K64 para poder cargarse.

XNU en OS X Mountain Lion (10.8) y posteriores solo proporciona un kernel de 64 bits.

Kit de IO

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

Muchos controladores se pueden escribir para ejecutarse en modo de usuario , lo que mejora aún más la estabilidad del sistema. Si un controlador que se ejecuta en modo de usuario falla, no bloqueará el núcleo. Sin embargo, si un controlador que se ejecuta en modo kernel falla, bloqueará el núcleo. Algunos ejemplos de controladores que se ejecutan en modo kernel incluyen controladores de adaptadores de disco y 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 . En macOS Catalina y versiones posteriores, DriverKit permite que algunos de esos tipos de controladores se ejecuten en modo de usuario. [15]

Véase también

Referencias

  1. ^ "Portar aplicaciones UNIX/Linux a Mac OS X: glosario". Apple Computer. 2005. Consultado el 7 de junio de 2017 .
  2. ^ "README del código fuente de GitHub de XNU". GitHub . 16 de diciembre de 2021.
  3. ^ de Magee, Jim. WWDC 2000, sesión 106: Mac OS X: Kernel. 14 minutos. Archivado desde el original el 21 de diciembre de 2021.
  4. ^ "El entorno de ejecución de C++ de libkern". Pautas de diseño de controladores de dispositivos de IOKit .
  5. ^ Amit Singh. «¿Qué es Mac OS X?». Archivado desde el original el 19 de abril de 2019. Consultado el 4 de marzo de 2015 .
  6. ^ Wells, Douglas M. (1994). Un entorno de sistema operativo confiable, escalable y en tiempo real (PDF) . Conferencia sobre tecnologías y aplicaciones de doble uso del IEEE de 1994. S2CID  5205380. Archivado desde el original (PDF) el 22 de agosto de 2017.
  7. ^ Watson, Robert (2 de agosto de 2008). "Re: freebsd-advocacy Digest, vol. 248, número 1". freebsd-advocacy (lista de correo) . Consultado el 24 de octubre de 2013 .
  8. ^ "Informe trimestral de situación de FreeBSD (Grand Central Dispatch – puerto de FreeBSD)". Abril de 2009. Consultado el 24 de octubre de 2013 .
  9. ^ Mac OS X 10.6 Snow Leopard: la reseña de Ars Technica, página 5
  10. ^ Siracusa, John (31 de agosto de 2009). "Mac OS X 10.6 Snow Leopard: la revisión de Ars Technica". Ars Technica . Por último, 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 se ejecutan perfectamente en modo de 64 bits sobre el kernel de 32 bits, e incluso en versiones anteriores de Mac OS X ha sido posible instalar y aprovechar mucho más de 4 GB de RAM.
  11. ^ Mac OS X Server v10.6: Macs que utilizan el kernel de 64 bits
  12. ^ "Novedades de Mac OS X: Mac OS X v10.6". Desarrollador de Apple . Apple, Inc.
  13. ^ Mac OS X Server v10.6: Inicio con el kernel de 32 bits o 64 bits
  14. ^ Amit Singh. "XNU: The Kernel". ¿Qué es Mac OS X? . I/O Kit. Archivado desde el original el 19 de abril de 2019 . Consultado el 9 de septiembre de 2011 . I/O Kit utiliza un subconjunto restringido de C++
  15. ^ "DriverKit". Desarrollador de Apple .

Enlaces externos