Analisis Mendalam Darwin OS dan Kernel XNU Apple
(tansanrao.com)- Sistem operasi Darwin milik Apple adalah komponen inti berbasis Unix yang menjadi fondasi OS modern Apple seperti macOS dan iOS
- Intinya adalah kernel XNU, sebuah kernel hibrida dengan nama yang berarti "X is Not Unix"
- Kernel ini menggabungkan struktur mikrokernel Mach dan elemen BSD Unix untuk mewujudkan keseimbangan antara performa dan modularitas
- Artikel ini menjelaskan proses perkembangan struktural Darwin dan XNU, mulai dari akar Mach dan BSD hingga evolusi terbarunya di Apple Silicon
- Artikel ini juga menganalisis komponen inti kernel (IPC, penjadwalan, manajemen memori, virtualisasi, dll.) dan adaptasinya terhadap perangkat keras modern
Asal-usul mikrokernel Mach (1985–1996)
- Mach dimulai pada 1985 di Carnegie Mellon University oleh Richard Rashid dan Avie Tevanian
- Mach dirancang sebagai mikrokernel yang hanya menyediakan fungsi inti untuk mengurangi kompleksitas kernel UNIX
- Ia hanya menyediakan fungsi tingkat rendah seperti manajemen memori, penjadwalan berbasis thread, dan IPC berbasis pesan, sementara sistem file, jaringan, dan lain-lain dipisahkan sebagai server di ruang pengguna
- Mach 2.5 berjalan di ruang kernel bersama sebagian kode kernel BSD untuk menutupi kekurangan performa
- Mach 3.0 beralih menjadi mikrokernel sejati dan juga memengaruhi manajemen memori BSD
- Mach memperkenalkan konsep Task dan Thread serta mengimplementasikan model memori virtual yang efisien
- NeXT (didirikan Steve Jobs pada 1985) mengembangkan OS NeXTSTEP berbasis Mach 2.5 + 4.3BSD
- Kernel NeXTSTEP membentuk struktur hibrida dengan menggabungkan Mach dan BSD di ruang kernel
- Drivernya dikembangkan dengan DriverKit berbasis Objective-C, mencoba pendekatan berorientasi objek
- Apple mengakuisisi NeXT pada 1996 dan membawa masuk NeXTSTEP serta kernel XNU berbasis Mach/BSD
- Versi awal Mac OS X (Rhapsody) dikembangkan berdasarkan struktur kernel NeXT
Evolusi awal Mac OS X (1997–2005)
- Apple mengintegrasikan kode Mach 3.0 berbasis OSFMK 7.3 ke dalam XNU dan memperbarui lapisan BSD dengan kode FreeBSD dan 4.4BSD
- Untuk meningkatkan performa dan memperluas dukungan perangkat keras, Apple mempertahankan struktur hibrida yang menanamkan fungsi BSD dan Mach
- Diperkenalkan framework driver baru I/O Kit: berbasis C++ alih-alih Objective-C, dioptimalkan untuk performa dan mendukung hot-plugging
- Ringkasan fitur versi utama:
- 10.1 Puma (2001): dukungan thread real-time, peningkatan performa
- 10.2 Jaguar (2002): diperkenalkannya IPv6, IPSec, Bonjour, journaling HFS+
- 10.3 Panther (2003): peningkatan kernel berbasis FreeBSD 5, diperkenalkannya fine-grained locking untuk dukungan multicore
- XNU mendukung PowerPC sebagai basis sambil tetap mempertahankan kode dukungan x86 untuk mempersiapkan transisi di masa depan
- 10.4 Tiger (2005): memperoleh sertifikasi UNIX 03, menyiapkan landasan transisi ke Intel, memperkenalkan sistem event kqueue/kevent
Era 64-bit, multicore, dan iPhone OS (2005–2010)
- 10.5 Leopard (2007):
- dukungan x86_64 dan kemampuan driver 64-bit
- penguatan fitur keamanan dan debugging seperti ASLR, sandbox, dan DTrace
- dukungan resmi terakhir untuk PowerPC
- iPhone OS 1 (2007):
- berbasis Darwin 9, mem-porting XNU ke ARM
- memperkenalkan mekanisme Jetsam untuk menangani kekurangan memori
- mewajibkan sandbox penuh untuk aplikasi dan code signing
- 10.6 Snow Leopard (2009):
- khusus Intel, dukungan kernel 64-bit penuh
- diperkenalkannya Grand Central Dispatch: framework paralelisasi task di ruang pengguna yang bekerja sama dengan kernel
- integrasi OpenCL dan dukungan komputasi GPU
- iOS 4 (2010):
- diperkenalkannya multitasking dan penjadwalan berbasis prioritas (pemisahan background/foreground)
Modernisasi macOS dan iOS (2011–2020)
- 10.8~10.9 (2012–2013):
- diperkenalkannya Compressed Memory untuk mengoptimalkan penggunaan RAM
- Timer Coalescing untuk memperkuat penghematan daya CPU
- perkembangan penjadwalan berfokus efisiensi energi seperti App Nap dan QoS
- 10.10~10.11 (2014–2015):
- diperkenalkannya SIP(System Integrity Protection): bahkan hak root tidak bisa mengubah file sistem
- membuka kemungkinan perluasan XNU ke beragam perangkat seperti watchOS dan tvOS
- dukungan ARM64 serta dimulainya persiapan penghentian ARM 32-bit
- 10.12~10.14 (2016–2018):
- transisi sistem file ke APFS(Apple File System)
- dukungan snapshot, cloning, dan enkripsi
- penguatan keamanan kext: persetujuan pengguna diwajibkan, pemeriksaan code signing diperketat
- 10.15 Catalina (2019):
- diperkenalkannya DriverKit: driver berjalan di ruang pengguna (kembali ke filosofi mikrokernel)
- penguatan keamanan dengan memisahkan volume sistem sebagai read-only
Era Apple Silicon (2020–sekarang)
-
macOS 11 Big Sur (2020):
- dukungan Apple Silicon(M1) berbasis ARM64
- dukungan penjadwalan CPU big.LITTLE: distribusi core efisiensi/performa berbasis QoS
- struktur Mach VM cocok untuk arsitektur unified memory
-
Penguatan keamanan dan virtualisasi:
- dukungan fitur keamanan perangkat keras ARM seperti PAC(pointer authentication) dan MTE(memory tagging)
- diperkenalkannya framework virtualisasi baru berbasis kemampuan hypervisor Apple Silicon
- macOS dapat menjalankan VM ringan untuk pengembang (dikendalikan dari ruang pengguna)
-
Struktur platform terintegrasi:
- XNU digunakan sebagai kernel untuk semua platform Apple seperti macOS, iOS, watchOS, tvOS, bridgeOS, dan visionOS
- berkat abstraksi platform Mach, ia dapat beradaptasi dengan mudah pada berbagai arsitektur CPU
Ringkasan tonggak utama XNU
- 1989 - NeXTSTEP 1.0 - diperkenalkannya hibrida XNU berbasis Mach 2.5 + BSD
- 1996 - Apple mengakuisisi NeXT - dimulainya pengembangan Rhapsody berbasis Mach 3.0 + FreeBSD
- 2001 - Mac OS X 10.0 - pemantapan struktur kernel XNU dan peningkatan performa awal
- 2005 - 10.4 Tiger - sertifikasi UNIX, persiapan transisi ke Intel
- 2007 - 10.5 Leopard - dukungan 64-bit, penguatan fitur keamanan, lahirnya iPhone OS
- 2009 - 10.6 Snow Leopard - transisi penuh ke Intel dan diperkenalkannya GCD
- 2011 - 10.7 Lion - kernel 64-bit diwajibkan, perluasan sandboxing
- 2013 - 10.9 Mavericks - diperkenalkannya kompresi memori dan penjadwalan QoS
- 2015 - 10.11 El Capitan - diperkenalkannya SIP, ekspansi ke perangkat seperti watchOS
- 2017 - 10.13 High Sierra - APFS diterapkan sebagai default, keamanan Kext diperkuat
- 2019 - 10.15 Catalina - driver berjalan di ruang pengguna melalui DriverKit
- 2020 - 11 Big Sur - dukungan Apple Silicon, diperkenalkannya struktur virtualisasi baru
- 2022 - 13 Ventura - peningkatan penjadwalan untuk core berperforma tinggi seperti M1 Max
- 2024 - 14 Sonoma - optimasi M2/M3 dan dukungan Memory Tagging
Struktur dan desain kernel XNU
Desain kernel hibrida: integrasi Mach + BSD
- XNU memiliki struktur kernel hibrida yang memadukan karakteristik mikrokernel (Mach) dan kernel monolitik (BSD)
- Mach mengabstraksikan dan memodularisasi fungsi tingkat rendah (thread, memori, IPC, dll.), sementara BSD menjalankan seluruh system call dan API UNIX langsung di ruang kernel
- BSD dan Mach ditautkan sebagai satu binary kernel dan berjalan dalam ruang alamat yang sama
- Di dalam kernel, fungsi Mach dan BSD saling dipanggil langsung tanpa pesan, dan system call UNIX diproses dengan performa setara kernel Unix lainnya
- Contoh: saat system call
read()dipanggil, kode sistem file BSD dijalankan langsung di kernel
Peran Mach
- Menyediakan infrastruktur inti kernel seperti thread, manajemen task, context switching, antrean penjadwalan, dan timer
- Menyediakan IPC berbasis pesan melalui Mach port (mendukung berbagi memori antarproses dan transfer buffer besar)
- Mengimplementasikan fungsi manajemen memori virtual tingkat lanjut seperti memory object, optimasi copy-on-write, dan abstraksi ruang alamat
Peran BSD
- Menyediakan fungsi UNIX seperti proses dan PID, signal, user ID, API POSIX, sistem file, network stack, dan UNIX IPC
- Berasal dari kode BSD berbasis FreeBSD, juga mencakup fitur OpenBSD/NetBSD
- Mengimplementasikan kebijakan keamanan seperti framework keamanan (KAuth, MAC), sandbox, SIP, dan verifikasi code signing
- Implementasi system call:
fork()melakukan duplikasi VM di Mach, sementara duplikasi file descriptor dilakukan di BSD - Menangani sebagian besar fungsi UNIX seperti sistem file(VFS), jaringan, pemrosesan signal, dan POSIX thread
I/O Kit
- Framework driver berorientasi objek yang berjalan di ruang kernel (menggunakan Embedded Subset dari C++)
- Mendefinisikan hierarki perangkat dan tiap driver mengimplementasikannya melalui pewarisan
- Menyediakan antarmuka user client yang bisa diakses dari ruang pengguna
- Sinkronisasi kernel dan kontrol thread menggunakan fungsi Mach, sementara driver sistem file dan jaringan terhubung dengan BSD
- Driver dapat dimuat secara dinamis sebagai Kext dan dimuat ke memori kernel dalam format Mach-O
Mach IPC dan pengiriman pesan
- Mach port adalah mekanisme IPC utama antara kernel dan ruang pengguna, atau antarproses pengguna
- Tiap proses dapat dikendalikan melalui Mach port, dan daemon sistem seperti launchd mengendalikan proses melalui port
- Fitur tingkat lanjut macOS seperti Grand Central Dispatch dan XPC diimplementasikan di atas pesan Mach
- Pesan Mach memiliki sistem hak port yang memberikan keamanan tinggi, serta memungkinkan transfer port dan shared memory
- MIG(Mach Interface Generator) digunakan untuk menghasilkan otomatis kode RPC berbasis pesan antara kernel dan pengguna
- DriverKit mengimplementasikan komunikasi antara kernel dan driver ruang pengguna berbasis Mach IPC
Scheduler dan manajemen thread
- Berkembang dari scheduler round-robin berbasis prioritas milik Mach
- Tiap CPU memiliki Run Queue tersendiri, dan thread dijadwalkan berdasarkan prioritas
- Sejak hadirnya iOS, diperkenalkan kebijakan penjadwalan berdasarkan peran aplikasi (background/foreground)
- Penjadwalan berbasis kelas QoS(Quality of Service): prioritas disesuaikan menurut jenis pekerjaan seperti interaktif pengguna atau background
- Di Apple Silicon, thread dialokasikan ke core efisiensi atau core performa sesuai QoS
- Thread real-time (misalnya audio) dijalankan lebih dulu melalui antrean real-time, dan sejak macOS 10.4 didukung penjadwalan deadline
- Kolaborasi dengan manajemen daya: optimasi performa mobile melalui idle thread, penggabungan timer, dan masuk ke status hemat daya
Manajemen memori dan memori virtual
- Mach VM adalah komponen inti sistem memori XNU, dengan desain yang kuat dan fleksibel
- Ruang alamat virtual berbasis copy-on-write, sehingga memungkinkan penyalinan memori yang efisien saat fork()
- Struktur memory object dan pager:
- daemon ruang pengguna
dynamic_pagermengelola area swap - pemetaan file diproses di dalam kernel melalui vnode pager
- daemon ruang pengguna
- Sejak Mavericks, diperkenalkan compressed memory: saat memori kurang, halaman dipertahankan dengan dikompresi alih-alih langsung di-swap ke disk
- pmap: lapisan yang bergantung pada mesin untuk mengelola memori fisik dan page table di tiap arsitektur
- Kernel memiliki ruang alamat terpisah, dan sebagian area disetel sebagai memori tetap (wired)
- macOS memperkuat keamanan memori melalui guard page untuk debugging, alokasi zero-fill, dan proteksi segmentasi
- Mach VM secara efisien menangani hal seperti berbagi framework melalui shared memory dan pengaturan inheritance
- Di Apple Silicon, GPU dan ruang memori terintegrasi, sehingga Mach VM mengoptimalkan alokasi berdasarkan karakteristik memori
Dukungan virtualisasi
- XNU pada awalnya tidak memiliki fungsi hypervisor, tetapi sejak OS X 10.10 mulai mendukung virtualisasi melalui Hypervisor.framework
- Pada basis Intel, VT-x dimanfaatkan agar VM di ruang pengguna bisa dijalankan
- Pada Apple Silicon berbasis ARM, fitur virtualisasi EL2 dimanfaatkan melalui Virtualization.framework
- Hypervisor internal kernel menangani memori virtual, pemrosesan trap vCPU, penjadwalan, dan sebagainya
- vCPU diproses sebagai host thread dengan memanfaatkan struktur thread dan Mach task milik XNU
- macOS juga menyediakan fungsi emulasi x86 seperti Rosetta 2, termasuk translasi syscall dan kompatibilitas ABI
- Sejak iOS 15, virtualisasi dalam bentuk terbatas juga diizinkan di iOS (memerlukan mode pengembang)
Struktur komputasi keamanan
- Secure Enclave:
- subsistem keamanan independen yang terintegrasi di Apple SoC
- menjalankan mikrokernel terpisah bernama sepOS, melindungi data biometrik, kunci kriptografi, dan lain-lain
- tetap mempertahankan pemrosesan keamanan yang terisolasi meskipun kernel utama disusupi
- Exclaves:
- area isolasi baru yang diperkenalkan mulai macOS 14.4 dan iOS 17
- memisahkan sumber daya sensitif seperti autentikasi Apple ID, buffer audio, dan data sensor ke area di luar kernel utama
- dikendalikan melalui Kext dan framework khusus seperti
ExclaveKextClient.kext - meskipun kernel disusupi, area exclave tetap dilindungi secara independen
- Konsep ini mencerminkan bahwa enclave adalah area yang termasuk di dalam sistem, sedangkan exclave adalah area terpisah yang terhubung dari luar sistem
Kesimpulan
- XNU adalah kernel dengan struktur hibrida praktis yang mengompromikan kelebihan mikrokernel dan kernel monolitik
- Lapisan abstraksi Mach memungkinkan transisi ke berbagai arsitektur CPU dan perluasan sistem, sementara BSD menyediakan kompatibilitas POSIX dan lingkungan Unix yang stabil
- Apple memisahkan fungsi ke ruang pengguna saat diperlukan melalui Mach IPC, sementara bagian dalam kernel dihubungkan langsung demi efisiensi
- Berdasarkan arsitektur berlapis seperti driver (DriverKit ruang pengguna), virtualisasi (Hypervisor.framework), scheduler (QoS), dan manajemen memori (Compressed Memory), sistem ini merespons kebutuhan sistem modern secara fleksibel
- Darwin dan XNU berawal dari NeXTSTEP, lalu berkembang menjadi inti bagi ratusan juta perangkat Apple, dan masih terus berevolusi
Belum ada komentar.