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.
Kernel monolitik berarti bahwa seluruh sistem operasi berjalan dalam mode kernel (yaitu sangat istimewa oleh perangkat keras). Artinya, tidak ada bagian dari OS yang berjalan dalam mode pengguna (hak istimewa lebih rendah). Hanya aplikasi di atas OS yang berjalan dalam mode pengguna.
Dalam sistem operasi kernel non-monolitik, seperti Windows, sebagian besar OS itu sendiri berjalan dalam mode pengguna.
Dalam kedua kasus tersebut, OS bisa sangat modular.
sumber
Modul Linux dapat berarti modular dalam beberapa hal. Seperti yang orang lain catat, monolitik biasanya mewakili sebuah kernel mikro versus kernel monolitik . Sebuah microkernel tradisional hanya memiliki fitur-fitur ini,
Tidak ada driver perangkat keras , tumpukan protokol , sistem file , menangguhkan / melanjutkan , manajemen jam , dll di kernel utama. Hal-hal ini identik dengan tugas pengguna apa pun (meskipun mereka mungkin memiliki hak istimewa yang berbeda melalui MMU / scheduler).
Prediksi Tanenbaum
Pemrogram PC dan server mungkin tertawa, tetapi dua dan tiga tentu benar untuk sebagian besar ponsel yang ada. Tanenbaum akan benar di semua akun jika BlackBerry QNX sukses.
Juga, banyak L1-hypervisors memiliki mikro-kernel di bawahnya. Ini karena hyper-visor biasanya tidak melakukan banyak hal selain saklar konteks .
Rupanya tiga memprediksi keberhasilan Linux. ;-)
Argumen untuk microkernels adalah bahwa semua sub-sistem monolitik perlu menyinkronkan beberapa nilai sekaligus. Untuk melakukan ini, mereka harus menggunakan kunci dan akan menderita hukum Amdahl ketika diperluas ke arsitektur paralel. Penghitungnya adalah microkernels menghasilkan banyak pesan IPC.
Perkembangan utama adalah penggunaan pemrograman bebas kunci untuk menghindari pertikaian dalam kernel monolitik. Ini menghindari penguncian dalam kernel monolitik sementara juga mengurangi overhead IPC. Baru-baru ini semua CPU telah memperluas ISA mereka untuk memasukkan primitif yang lebih baik untuk algoritma bebas kunci . Jadi Linux mungkin akan tetap menjadi kernel monolitik untuk beberapa waktu.
sumber
Dari Wikipedia :
Versi terbaru dari Windows menggunakan kernel Hybrid .
sumber
'Monolitik' dalam konteks ini tidak merujuk pada keberadaan satu executable besar tunggal, dan seperti yang Anda katakan, Linux mendukung pemuatan dinamis modul kernel pada saat runtime. Ketika berbicara tentang kernel, 'monolitik' berarti bahwa seluruh sistem operasi berjalan dalam mode 'istimewa' atau 'pengawas', berbeda dengan jenis sistem operasi lain yang menggunakan jenis kernel seperti 'microkernel', di mana hanya sedikit serangkaian fungsi berjalan dalam mode istimewa, dan sebagian besar sistem operasi berjalan di ruang pengguna.
Para pendukung microkernels mengatakan bahwa ini lebih baik karena kode yang lebih kecil berarti lebih sedikit bug, dan bug yang berjalan dalam mode pengawas dapat menyebabkan masalah yang jauh lebih besar daripada dalam kode ruang pengguna (seperti peluang lebih besar untuk memiliki kerentanan keamanan atau kerusakan total sistem dalam bentuk 'kernel panik'). Beberapa microkernels cukup minim sehingga dapat 'diverifikasi secara formal', yang berarti Anda dapat membuktikan secara matematis bahwa kernel 'benar' sesuai dengan spesifikasi. L4 adalah contoh yang bagus untuk ini.
sumber
Kernel monolitik adalah proses besar tunggal yang berjalan seluruhnya dalam ruang alamat tunggal. Ini adalah file biner statis tunggal. Semua layanan kernel ada dan jalankan di ruang alamat kernel. Kernel dapat menjalankan fungsi secara langsung. Contoh OS berbasis kernel monolitik adalah Linux, Unix.
Saya pikir posting ini akan membantu Anda lebih memahami konsep.
http://learnlinuxconcepts.blogspot.in/2014/03/what-are-monolithic-and-micro-kernels.html
sumber