Sebuah microkernel mengimplementasikan semua driver sebagai program ruang pengguna, dan mengimplementasikan fitur-fitur inti seperti IPC di dalam kernel itu sendiri. Kernel monolitik, bagaimanapun, mengimplementasikan driver sebagai bagian dari kernel (misalnya berjalan dalam mode kernel).
Saya telah membaca beberapa klaim bahwa microkernels lebih lambat dari kernel monolithic, karena mereka perlu menangani pengiriman pesan antar driver di ruang pengguna. Apakah ini benar?
Untuk waktu yang lama, kebanyakan kernel monolitik karena perangkat kerasnya terlalu lambat untuk menjalankan kernel mikro dengan cepat. Namun, sekarang ada banyak microkernels dan kernel hybrid, seperti GNU / Hurd, Mac OS X, Windows NT line, dll.
Jadi, apakah ada yang berubah tentang kinerja microkernels? Apakah kritik terhadap kernel mikro ini masih berlaku hari ini?
Saya lebih suka menyebut Windows NT dan Apple XNU kernel monolithic daripada hybrid. Saya tidak menemukan klasifikasi hibrida memiliki banyak makna dalam praktiknya. Bahkan salah satu insinyur asli XNU menyebutnya monolitik [1].
Pada masalah kinerja, satu-satunya perbandingan monolitik vs mikro yang dapat saya temukan adalah "Komputasi Kinerja Tinggi Ekstrim atau Mengapa Microkerenels Sedot" [2] dan presentasi bantahan "Do Microkernels Suck?" [3].
Modularitas dan customizablity lebih banyak masalah desain daripada keterbatasan yang melekat dalam kernel monolitik. Kernel Linux, misalnya, dapat berkisar dari beberapa megabyte hingga sekitar satu megabyte dalam ukuran tergantung pada opsi waktu kompilasi dan penerapan tambalan tertentu. Sebagian besar dari 15 juta baris kode Linux ditambah adalah modul kernel yang dapat dimuat. Mereka dikompilasi secara terpisah dari kernel dasar dan hanya dimuat ketika dibutuhkan. Modul-modul itu dapat mengimplementasikan driver dan panggilan sistem (bahkan mengesampingkan panggilan sistem dasar).
Dua area di mana microkernels memiliki keunggulan yang tidak perlu dipersoalkan adalah dalam memori rendah (<= 512k ram) atau sistem operasi "keras" Real-time, seperti sistem penerbangan maskapai atau sistem kontrol reaktor nuklir.
Sunting: Berbicara lebih lanjut tentang kelebihan dan kekurangan dari kedua arsitektur kernel, Gernot Heiser dengan bebas mengakui pada akhir presentasinya [3] bahwa kernel monolitik secara inheren lebih berkinerja karena sebuah microkernel selalu memiliki beberapa overhead tambahan. Padahal, overhead tambahan itu mengarah pada peningkatan keandalan, karenanya dominasi kernel mikro RTOS.
[1] Louis G. Gerbarg, "Sinkronisasi Lanjutan di Mac OS X: Memperluas Unix ke SMP dan Real-Time", Prosiding Konferensi BSDCon 2002, hlm. 2
[2] Chistoph Lameter, "Komputasi Kinerja Tinggi Ekstrim atau Mengapa Microkernels Sedot", Simposium Linux 2007, Volume One
[3] Gernot Heiser, "Do Microkernels Suck?", 9th Linux.conf.au, Januari, 2008
sumber