XNU
Kernel XNU
PengembangApple Inc.
Ditulis dalamC, C++, bahasa rakitan
Keluarga perangkat lunakMirip Unix, Unix[1]
Kondisi kerjaAktif
Model sumberSumber terbuka
Rilis perdanaDesemberย 1996; 29ย tahun laluย (1996-12)
Repositori Sunting di Wikidata
Dukungan platformSaat ini: x86-64, ARM 64-bit, ARM 32-bit (dukungan ARM 32-bit bersifat sumber tertutup)
Historis: PowerPC (32-bit dan 64-bit), IA-32
Tipe kernelHibrida
LisensiApple Public Source License 2.0
PendahuluMach, Nukernel
Situs web resmigithub.com/apple-oss-distributions/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.[2]

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.[3]

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

sunting

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.

Hingga 2021, 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 iOS 11.

Mach

sunting

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

sunting

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.[11]

K32/K64

sunting

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 32ย 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.[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

sunting

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]

Lihat pula

sunting

Referensi

sunting
  1. ^ a b "Open Brand".
  2. ^ "Porting UNIX/Linux Applications to Mac OS X: Glossary". Apple Computer. 2005. Diakses tanggal June 7, 2017.
  3. ^ "XNU GitHub source code README". GitHub. December 16, 2021.
  4. ^ a b Magee, Jim. WWDC 2000 Session 106 โ€“ Mac OS X: Kernel. 14 menit di. Diarsipkan dari versi aslinya tanggal 2021-12-21.
  5. ^ "The libkern C++ Runtime". IOKit Device Driver Design Guidelines.
  6. ^ Amit Singh. "What is Mac OS X?". Diarsipkan dari asli tanggal 2019-04-19. Diakses tanggal 2015-03-04.
  7. ^ "How Mac OS X Works". HowStuffWorks (dalam bahasa American English). 2011-08-08. Diakses tanggal 2025-03-12.
  8. ^ McKay, Dave (2019-10-21). "Is macOS UNIX? (and What Does That Mean?)". How-To Geek (dalam bahasa Inggris). Diakses tanggal 2025-03-12.
  9. ^ Wells, Douglas M. (1994). A Trusted, Scalable, Real-Time Operating System Environment (PDF). 1994 IEEE Dual-Use Technologies and Applications Conference. S2CIDย 5205380. Diarsipkan dari asli (PDF) tanggal 2017-08-22.
  10. ^ Watson, Robert (August 2, 2008). "Re: freebsd-advocacy Digest, Vol 248, Issue 1". http://lists.freebsd.org/pipermail/freebsd-advocacy/2008-August/003674.html.ย 
  11. ^ "FreeBSD Quarterly Status Report (Grand Central Dispatch โ€“ FreeBSD port)". April 2009. Diakses tanggal October 24, 2013.
  12. ^ Mac OS X 10.6 Snow Leopard: the Ars Technica review, page 5
  13. ^ 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.
  14. ^ "What's New in Mac OS X: Mac OS X v10.6". Apple Developer. Apple, Inc.
  15. ^ Mac OS X Server v10.6: Starting up with the 32-bit or 64-bit kernel
  16. ^ 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
  17. ^ "DriverKit". Apple Developer.

Pranala luar

sunting
  • Repositori XNU di GitHub, repositori resmi
  • XNU: The Kernel di Wayback Machine (diarsipkan tanggal June 2, 2020) โ€“ 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)

๐Ÿ“š Artikel Terkait di Wikipedia

Kernel hibrida

bukan pada modus kernel seperti yang terdapat pada kernel monolitik. Dan lebih jauh karena tujuan disainnya serupa dengan tujuan disain Mach (salah satu mikrokernel

GNU

yang sama sebagai kernel Unix tradisional. Karena kernel mikro Mach, menurut perancangannya, hanya menyediakan fungsionalitas kernel tingkat-rendah, Proyek

IOS

"preseden yang mengerikan" tetapi memuji sandboxing aplikasi iOS. Kernel iOS adalah kernel XNU Darwin. OS iPhone asli (1.0) hingga iPhone OS 3.1.3 menggunakan

IPadOS

Over-the-air, iTunes, Finder Dukungan platform iPad dengan CPU ARMv8-A Tipe kernel Hybrid (XNU) Antarmuka bawaan Cocoa Touch (multi-touch, GUI) Lisensi Proprietary

Singularity

uses. GNU Hurd, Userspace drivers, GNU Operating System kernel. Mach (kernel) Original Micro-kernel, with userspace drivers. http://research.microsoft.com/os/singularity/

Daftar ilmuwan komputer

interaction, graphical user interface, Apple Macintosh Avie Tevanian - Mach kernel team, NeXT, Mac OS X Ken Thompson - Unix Walter F. Tichy - RCS Seinosuke

IPadOS 16

Manajer paket App Store Platform iPad, iPad Air, iPad Mini, iPad Pro Tipe Kernel Hibrida (XNU) Antarmuka pengguna standar Cocoa Touch (multi-sentuh, GUI)

GNU Hurd

terminologi Unix) yang berjalan pada GNU Mach mikrokernel; bersama-sama mereka dimaksudkan untuk membentuk kernel dari sistem operasi GNU. Hurd bertujuan