Setelah Apple mengakuisisi NeXT, kernel tersebut diperbarui dengan kode yang diturunkan dari OSF MK 7.3 milik OSF,[4] dan proyek FreeBSD. DriverKit kemudian diganti dengan API baru pada subset terbatas dari C++[5] (berdasarkan Embedded C++)[6] bernama IOKit.
Dengan tetap mempertahankan kernel BSD ke dalam bagian ketiga XNU,[7] XNU menjadi berbasis UNIX ketika macOS mencapai sertifikasi UNIX di bawah Single UNIX Specification (SUS) oleh The Open Group.[8] Terlepas dari hal ini, Apple tetap mempertahankan nama asli 'XNU', yang merupakan singkatan dari 'X is Not Unix,' peninggalan dari asal-usul NeXTSTEP sebelum macOS bersertifikat UNIX. Hal ini terkadang menimbulkan kebingungan, karena namanya menyiratkan bahwa XNU terpisah dari UNIX, meskipun macOS secara keseluruhan secara resmi diakui sebagai sistem operasi UNIX.[1]
Desain kernel
XNU adalah sebuah kernel hibrida, yang mengandung fitur-fitur dari kernel monolitik dan mikrokernel, dengan upaya untuk memanfaatkan teknologi terbaik dari keduanya. Contohnya seperti kemampuan pengiriman pesan (message passing) mikrokernel yang memungkinkan modularitas lebih tinggi dan porsi sistem operasi yang lebih besar untuk mendapatkan manfaat dari perlindungan memori, namun tetap mempertahankan kecepatan kernel monolitik untuk beberapa tugas krusial.
Basis dari kernel XNU adalah kernel Mach Open Software Foundation (OSF MK) 7.3 yang telah dimodifikasi secara besar-besaran (hibrida).[4] OSF MK 7.3 adalah sebuah mikrokernel[9] yang mencakup kode yang dapat diterapkan dari kernel Mach 4 Universitas Utah dan dari berbagai varian Mach 3.0 yang merupakan percabangan (forked) dari mikrokernel Mach 3.0 asli milik Universitas Carnegie Mellon.
OSF MK 7.3 mampu menjalankan inti dari sistem operasi sebagai proses-proses yang terpisah, yang memungkinkan fleksibilitas yang besar (ia dapat menjalankan beberapa sistem operasi secara paralel di atas inti Mach), namun hal ini sering kali mengurangi performa karena adanya pengalihan konteks (context switch) mode kernel/pengguna yang memakan waktu dan overhead yang berasal dari pemetaan atau penyalinan pesan di antara ruang alamat kernel dan ruang alamat daemon layanan.
Apple melisensikan OSF MK 7.3 dari OSF, dan mencoba menyederhanakan beberapa tugas dengan membangun fungsi-fungsi BSD ke dalam kernel bersama dengan kode Mach. Hasilnya adalah kernel OSF MK 7.3 hibrida yang telah dimodifikasi secara mendalam.
BSD
Bagian Berkeley Software Distribution (BSD) dari kernel menyediakan antarmuka pemrograman aplikasi (API) Portable Operating System Interface (POSIX) (panggilan sistem BSD), model proses Unix di atas tugas-tugas Mach, kebijakan keamanan dasar, ID pengguna dan grup, perizinan, tumpukan protokol jaringan, kode sistem berkas virtual (termasuk lapisan penjurnalan yang independen dari sistem berkas), beberapa sistem berkas lokal seperti Hierarchical File System (HFS, HFS Plus (HFS+)) dan Apple File System (APFS), klien dan server Network File System (NFS), kerangka kerja kriptografi, komunikasi antarproses (IPC) UNIX System V, subsistem audit, kontrol akses wajib, dan beberapa primitif penguncian.[10] Kode BSD yang ada di XNU baru-baru ini telah disinkronkan dengan kode dari kernel FreeBSD. Meskipun sebagian besar telah dimodifikasi secara signifikan, pembagian kode masih terjadi antara Apple dan Proyek FreeBSD hingga 2009[update].[11]
K32/K64
XNU dalam Mac OS X Snow Leopard, v10.6, (versi Darwin 10) hadir dalam dua variasi, versi 32-bit yang disebut K32 dan versi 64-bit yang disebut K64.[12] K32 dapat menjalankan aplikasi 64-bit di userland.[13] Hal yang baru di Mac OS X 10.6 adalah kemampuan untuk menjalankan XNU di ruang kernel 64-bit. K32 adalah kernel default untuk 10.6 Server saat digunakan pada semua mesin kecuali model Mac Pro dan Xserve keluaran tahun 2008 ke atas dan dapat menjalankan aplikasi 64-bit. K64 memiliki beberapa keunggulan dibandingkan K32:[14]
Dapat mengelola RAM lebih dari 32GB, karena peta memori akan memakan area yang sangat besar secara tidak proporsional pada ruang kernel 32-bit.
Ukuran buffer cache dapat lebih besar dari yang diizinkan ruang kernel 32-bit, yang berpotensi meningkatkan performa I/O.
Performa meningkat saat menggunakan perangkat jaringan performa tinggi atau beberapa unit pemroses grafis (GPU), karena kernel dapat memetakan semua perangkat dalam ruang 64-bit meskipun beberapa memiliki buffer akses memori langsung (DMA) yang sangat besar.
Melakukan booting sambil menahan tombol 6 dan 4 akan memaksa mesin untuk memuat K64 pada mesin yang mendukung kernel 64-bit.[15] K64 akan menjalankan aplikasi 32-bit tetapi tidak akan menjalankan ekstensi kernel (KEXT) 32-bit, sehingga ekstensi tersebut harus di-porting ke K64 agar dapat dimuat.
XNU dalam OS X Mountain Lion (10.8) dan versi setelahnya hanya menyediakan kernel 64-bit.
IOKit
IOKit adalah kerangka kerja penggerak perangkat (device driver), yang ditulis dalam subset dari C++ berdasarkan Embedded C++.[16] Dengan menggunakan desain berorientasi objek, fitur-fitur yang umum bagi kelas penggerak apa pun sudah disediakan di dalam kerangka kerja ini, membantu penggerak perangkat ditulis dengan waktu dan kode yang lebih sedikit. IOKit bersifat multi-utas, aman untuk multipemrosesan simetris (SMP), dan memungkinkan perangkat yang dapat dilepas-pasang secara panas (hot-pluggable) serta konfigurasi perangkat yang dinamis dan otomatis.
Banyak penggerak dapat ditulis untuk berjalan dalam mode pengguna, yang selanjutnya meningkatkan stabilitas sistem. Jika penggerak yang berjalan dalam mode pengguna mengalami crash, hal itu tidak akan merusak kernel. Namun, jika penggerak yang berjalan dalam mode kernel crash, maka ia akan merusak kernel. Contoh penggerak yang berjalan dalam mode kernel termasuk penggerak adaptor disk dan jaringan, penggerak grafis, penggerak untuk pengontrol host Universal Serial Bus (USB) dan FireWire, serta penggerak untuk perangkat lunak mesin virtual seperti VirtualBox, Parallels Desktop for Mac, dan VMware Fusion. Dalam macOS Catalina dan rilis setelahnya, DriverKit memungkinkan beberapa tipe penggerak tersebut untuk berjalan dalam mode pengguna.[17]
↑Siracusa, John (August 31, 2009). "Mac OS X 10.6 Snow Leopard: the Ars Technica review". Ars Technica. Akhirnya, ini layak diulangi: harap diingat bahwa Anda tidak perlu menjalankan kernel 64-bit untuk menjalankan aplikasi 64-bit atau memasang RAM lebih dari 4 GB di Mac Anda. Aplikasi berjalan baik dalam mode 64-bit di atas kernel 32-bit, dan bahkan di versi Mac OS X sebelumnya sudah dimungkinkan untuk memasang dan memanfaatkan RAM jauh lebih dari 4GB.
↑Amit Singh. "XNU: The Kernel". What is Mac OS X?. I/O Kit. Diarsipkan dari asli tanggal April 19, 2019. Diakses tanggal September 9, 2011. I/O Kit menggunakan subset C++ yang dibatasi