2 poin oleh GN⁺ 2025-04-06 | Belum ada komentar. | Bagikan ke WhatsApp
  • 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_pager mengelola area swap
    • pemetaan file diproses di dalam kernel melalui vnode pager
  • 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.

Belum ada komentar.