XNU

**XNU** ("X is Not Unix") adalah kernel sistem operasi komputer yang dikembangkan di Apple Inc. sejak Desember 1996 untuk digunakan dalam sistem operasi Mac OS X (sekarang macOS) dan dirilis sebagai perangkat lunak bebas dan sumber terbuka sebagai bagian dari OS Darwin. Selain menjadi basis bagi macOS, Darwin juga merupakan basis bagi iOS, iPadOS, watchOS, visionOS, dan tvOS.

XNU awalnya dikembangkan oleh NeXT untuk sistem operasi NeXTSTEP. Ini merupakan kernel hibrida yang diturunkan dari versi 2.5 kernel Mach yang dikembangkan di Universitas Carnegie Mellon, yang menggabungkan sebagian besar kernel 4.3BSD yang dimodifikasi untuk berjalan di atas primitif Mach, bersama dengan antarmuka pemrograman aplikasi (API) dalam Objective-C untuk menulis penggerak (*driver*) bernama DriverKit.

Setelah Apple mengakuisisi NeXT, kernel tersebut diperbarui dengan kode yang diturunkan dari OSF MK 7.3 milik OSF, dan proyek FreeBSD. DriverKit kemudian diganti dengan API baru pada subset terbatas dari C++ (berdasarkan Embedded C++) bernama IOKit.

Dengan tetap mempertahankan kernel BSD ke dalam bagian ketiga XNU, XNU menjadi berbasis UNIX ketika macOS mencapai sertifikasi UNIX di bawah Single UNIX Specification (SUS) oleh The Open Group. 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.

## 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.

, XNU berjalan pada prosesor ARM64 dan x86-64, baik untuk model satu prosesor maupun multipemrosesan simetris (SMP). Dukungan PowerPC telah dihapus sejak versi dalam Mac OS X Snow Leopard. Dukungan untuk IA-32 dihapus sejak versi dalam Mac OS X Lion; dukungan untuk ARM 32-bit dihapus sejak versi dalam .

### Mach

Basis dari kernel XNU adalah kernel Mach Open Software Foundation (OSF MK) 7.3 yang telah dimodifikasi secara besar-besaran (hibrida). OSF MK 7.3 adalah sebuah mikrokernel 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. 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 .

### 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*. K32 dapat menjalankan aplikasi 64-bit di userland. 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:

* Dapat mengelola RAM lebih dari 32&nbsp;GB, 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. 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++. 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.

## Lihat pula

* Kernel (sistem operasi)
* A/UX
* mkLinux
* OSF/1
* Darwin (sistem operasi) – sistem operasi sumber terbuka yang dirilis oleh Apple, Inc., dengan XNU sebagai kernelnya
* macOS – sistem operasi yang dirilis oleh Apple, Inc., dengan XNU sebagai kernelnya

## Referensi

## Pranala luar
* , repositori resmi 
*  – ikhtisar komponen-komponen XNU, ditulis oleh Amit Singh pada Desember 2003
* Inside the Mac OS X Kernel – "Presentasi ini bermaksud untuk memperjelas kebingungan dengan menyajikan detail dari kernel Mac OS X" (Desember 2007)