Kernel monolitik adalah kernel di mana semua layanan (sistem file, VFS, driver perangkat, dll) serta fungsionalitas inti (penjadwalan, alokasi memori, dll.) Adalah grup rajutan ketat yang berbagi ruang yang sama. Ini secara langsung menentang microkernel .
Sebuah microkernel lebih memilih pendekatan di mana fungsionalitas inti diisolasi dari layanan sistem dan driver perangkat (yang pada dasarnya hanya layanan sistem). Sebagai contoh, VFS (sistem file virtual) dan blok sistem file perangkat (yaitu minixfs) adalah proses terpisah yang berjalan di luar ruang kernel, menggunakan IPC untuk berkomunikasi dengan kernel, layanan lain dan proses pengguna. Singkatnya, jika itu adalah modul di Linux, ini adalah layanan di microkernel, menunjukkan proses yang terisolasi.
Jangan bingung istilah kernel modular menjadi apa pun kecuali monolitik. Beberapa kernel monolitik dapat dikompilasi menjadi modular (misalnya Linux), yang penting adalah modul dimasukkan dan dijalankan dari ruang yang sama yang menangani fungsionalitas inti (ruang kernel).
Keuntungan dari microkernel adalah bahwa setiap layanan yang gagal dapat dengan mudah dimulai kembali, misalnya, tidak ada kernel yang berhenti jika sistem file root melempar dibatalkan. Ini juga dapat dilihat sebagai kerugian, karena dapat menyembunyikan bug yang cukup kritis (atau membuat mereka tampak tidak begitu kritis, karena masalahnya tampaknya terus memperbaiki dirinya sendiri). Ini dipandang sebagai keuntungan besar dalam skenario di mana Anda tidak bisa dengan mudah memperbaiki sesuatu setelah dikerahkan.
Kerugian dari sebuah microkernel adalah bahwa pesan IPC yang tidak sinkron dapat menjadi sangat sulit untuk di-debug, terutama jika fibril diimplementasikan. Selain itu, hanya melacak masalah FS / write berarti memeriksa proses ruang pengguna, layanan perangkat blok, layanan VFS, layanan sistem file dan (mungkin) layanan PCI. Jika Anda mengosongkan hal itu, saatnya untuk melihat layanan IPC. Ini seringkali lebih mudah di kernel monolitik. GNU Hurd menderita masalah debugging ini ( referensi ). Saya bahkan tidak akan pergi ke pos pemeriksaan ketika berhadapan dengan antrian pesan yang kompleks. Microkernels bukan untuk orang yang lemah hati.
Jalur terpendek menuju kernel yang berfungsi dan stabil adalah pendekatan monolitik. Salah satu pendekatan dapat menawarkan antarmuka POSIX, di mana desain kernel menjadi sedikit menarik bagi seseorang hanya ingin menulis kode untuk dijalankan pada desain yang diberikan.
Saya menggunakan Linux (monolitik) dalam produksi. Namun, sebagian besar pembelajaran saya, peretasan atau bermain-main dengan pengembangan kernel masuk ke sebuah microkernel, khususnya HelenOS .
Edit
Jika Anda sampai sejauh ini melalui jawaban saya yang bertele-tele, Anda mungkin akan bersenang-senang membaca debat ' Great Torvalds-Tanenbaum mengenai desain kernel '. Bahkan lebih lucu untuk membaca pada 2013, lebih dari 20 tahun setelah itu terjadi. Bagian yang paling lucu adalah tanda tangan Linus di salah satu pesan terakhir:
Linus "my first, and hopefully last flamefest" Torvalds
Jelas, itu tidak menjadi kenyataan lebih dari prediksi Tanenbaum bahwa x86 akan segera usang.
NB:
Ketika saya mengatakan "Minix", saya tidak menyiratkan Minix 3. Selain itu, ketika saya menyebutkan The HURD, saya mereferensikan (kebanyakan) mikrokernel Mach. Bukan maksud saya untuk meremehkan karya orang lain baru-baru ini.