XNU (X no és Unix) és el nucli del sistema operatiu d'ordinador (SO) desenvolupat a Apple Inc. des de desembre de 1996 per utilitzar-lo al sistema operatiu Mac OS X (ara macOS) i llançat com a programari lliure i de codi obert com a part del sistema operatiu. Darwin OS, que a més de macOS també és la base dels sistemes operatius Apple TV Software, iOS, iPadOS, watchOS, visionOS i tvOS OS.[1]
XNU va ser desenvolupat originalment per NeXT per al sistema operatiu NeXTSTEP. Es tractava d'un nucli híbrid derivat de la versió 2.5 del nucli Mach desenvolupat a la Universitat Carnegie Mellon, que incorporava la major part del nucli 4.3BSD modificat per funcionar sobre primitives Mach, juntament amb una interfície de programació d'aplicacions (API) a Objective-C per escriure. controladors anomenats Driver Kit.[2]
Després que Apple va adquirir NeXT, el nucli es va actualitzar amb codi derivat d' OSFMK 7.3 d' OSF, i el projecte FreeBSD, i el Driver Kit va ser substituït per una nova API en un subconjunt restringit de C++ [3] (basat en Embedded C++) [4] anomenat Kit d'E/S.
Disseny del nucli
XNU és un nucli híbrid, que conté característiques tant de nuclis monolítics com de micronuclis, intentant fer el millor ús d'ambdues tecnologies, com ara la capacitat de passar missatges dels micronuclis que permeten una major modularitat i porcions més grans del sistema operatiu per beneficiar-se de la protecció de la memòria i conservar la velocitat dels nuclis monolítics per a algunes tasques crítiques.
L'any 2021, XNU funciona amb processadors ARM64 i x86-64, tant amb un processador com amb models de multiprocessament simètric (SMP). El suport de PowerPC es va eliminar a partir de la versió de Mac OS X Snow Leopard. El suport per a IA-32 es va eliminar a partir de la versió de Mac OS X Lion; El suport per a ARM de 32 bits es va eliminar a partir de la versió d'iOS 11.
Mach
La base del nucli XNU és un nucli 7.3 de l'Open Software Foundation Mach (OSFMK) molt modificat (híbrid). OSFMK 7.3 és un micronucli que inclou el codi aplicable del nucli Mach 4 de la Universitat d'Utah i de les moltes variants de Mach 3.0 bifurcades del micronucli original Carnegie Mellon University Mach 3.0.
BSD
La part del nucli de Berkeley Software Distribution (BSD) proporciona la interfície de programació d'aplicacions de la Interfície del sistema operatiu portàtil (POSIX) (API, trucades al sistema BSD), el model de procés Unix a les tasques de Mach, polítiques de seguretat bàsiques, identificadors d'usuari i grup, permisos, etc. la pila de protocols de xarxa (protocols), el codi del sistema de fitxers virtual (inclosa una capa de diari independent del sistema de fitxers), diversos sistemes de fitxers locals com ara el sistema de fitxers jeràrquic (HFS, HFS Plus (HFS+)) i el sistema de fitxers d'Apple (APFS), el Client i servidor del sistema de fitxers de xarxa (NFS), marc criptogràfic, comunicació entre processos (IPC) del sistema UNIX V, subsistema d'auditoria, control d'accés obligatori i algunes de les primitives de bloqueig. El codi BSD present a XNU s'ha sincronitzat més recentment amb el del nucli de FreeBSD. Tot i que gran part s'ha modificat significativament, l'intercanvi de codi encara es produeix entre Apple i el FreeBSD Project A 2009.
K32/K64
XNU a Mac OS X Snow Leopard, v10.6, (versió Darwin 10) es presenta en dues varietats, una versió de 32 bits anomenada K32 i una versió de 64 bits anomenada K64. K32 pot executar aplicacions de 64 bits a l'usuari. El que era nou a Mac OS X 10.6 era la possibilitat d'executar XNU en un espai del nucli de 64 bits. K32 era el nucli predeterminat per al servidor 10.6 quan s'utilitzava a totes les màquines excepte als models Mac Pro i Xserve des del 2008 i pot executar aplicacions de 64 bits.
I/O Kit
I/O Kit és el marc del controlador del dispositiu, escrit en un subconjunt de C++ basat en Embedded C++. Mitjançant el seu disseny orientat a objectes, es proporcionen funcions comunes a qualsevol classe de controladors dins del marc, ajudant als controladors de dispositius a escriure's en menys temps i codi. El kit d'E/S és segur per a multiprocessament simètric (SMP) i permet dispositius connectables en calent i una configuració automàtica i dinàmica de dispositius.
Referències