Saya pernah membaca bahwa salah satu keunggulan arsitektur microkernel adalah Anda dapat menghentikan / memulai layanan penting seperti jaringan dan sistem file, tanpa perlu me-restart seluruh sistem. Tetapi mengingat bahwa kernel Linux saat ini (apakah selalu demikian?) Menawarkan opsi untuk menggunakan modul untuk mencapai efek yang sama, apa kelebihan (tersisa) dari sebuah kernel mikro?
39
Jawaban:
Microkernels membutuhkan lebih sedikit kode untuk dijalankan dalam mode terdalam, paling tepercaya daripada kernel monolitik . Ini memiliki banyak aspek, seperti:
GUI Unix disediakan melalui jendela X, yang merupakan kode userland (kecuali untuk (bagian dari) driver perangkat video). Banyak kesatuan modern memungkinkan pengguna biasa memuat driver sistem file melalui FUSE . Beberapa penyaringan paket jaringan Linux dapat dilakukan di userland. Namun, driver perangkat, penjadwal, manajer memori, dan sebagian besar protokol jaringan masih hanya kernel.
Sebuah bacaan klasik (jika bertanggal) tentang Linux dan microkernels adalah debat Tanenbaum-Torvalds . Dua puluh tahun kemudian, dapat dikatakan bahwa Linux bergerak sangat lambat menuju struktur mikrokernel (modul yang dapat dimuat muncul lebih awal, FUSE lebih baru), tetapi masih ada jalan panjang yang harus ditempuh.
Hal lain yang telah berubah adalah meningkatnya relevansi virtualisasi pada desktop dan komputer tertanam kelas atas: untuk beberapa tujuan, perbedaan yang relevan bukan antara kernel dan userland tetapi antara hypervisor dan OS tamu.
sumber
Sebuah microkernel membatasi waktu sistem dalam mode kernel, tidak seperti userspace, seminimal mungkin.
Jika crash terjadi dalam mode kernel, seluruh kernel turun, dan itu berarti seluruh sistem turun. Jika terjadi kerusakan dalam mode pengguna, proses itu hanya turun. Linux kuat dalam hal ini, tetapi masih memungkinkan bagi setiap subsistem kernel untuk menulis di atas memori subsistem kernel lainnya, baik secara sengaja atau tidak sengaja.
Konsep microkernel menempatkan banyak hal yang secara tradisional mode kernel, seperti jaringan dan driver perangkat, di userspace. Karena microkernel tidak terlalu bertanggung jawab atas banyak hal, itu juga berarti microkernel lebih sederhana dan lebih dapat diandalkan. Pikirkan cara protokol IP, dengan menjadi sederhana dan bodoh, benar-benar mengarah ke jaringan yang kuat dengan mendorong kerumitan ke tepi dan meninggalkan inti yang ramping dan jahat.
sumber
Anda harus membaca sisi lain dari masalah ini:
Komputasi Kinerja Tinggi Ekstrim atau Mengapa Microkernels payah
Sistem File Milik Kernel
sumber
Lihatlah arsitektur x86 - kernel monolitik hanya menggunakan cincin 0 dan 3. Sungguh sia-sia. Namun, sekali lagi ini bisa lebih cepat, karena lebih sedikit pengalihan konteks.
sumber
Kernel monolitik jauh lebih tua dari kernel mikro . Ini digunakan di Unix sementara ide microkernel muncul pada akhir 1980 - an .
Contoh OS yang memiliki kernel monolitik adalah UNIX, LINUX sedangkan OS yang memiliki microkernel adalah QNX, L4, HURD dan awalnya Mach (bukan MacOS X) yang kemudian dikonversi menjadi kernel hybrid. Bahkan MINIX bukanlah microkernel murni karena driver perangkatnya dikompilasi sebagai bagian dari kernel.
Kernel monolitik lebih cepat dari kernel mikro . Microkernel Mach pertama adalah 50% lebih lambat dari kernel monolitik. Versi yang lebih baru seperti L4 hanya 2% atau 4% lebih lambat dari kernel monolitik .
Kernel monolitik umumnya berukuran besar sementara microkernel murni harus berukuran kecil , bahkan masuk ke cache level pertama prosesor (microkernel generasi pertama).
Dalam kernel monolitik, driver perangkat berada di ruang kernel sementara di driver perangkat microkernel berada di ruang pengguna .
Karena driver perangkat berada di ruang kernel, itu membuat kernel monolitik kurang aman daripada microkernel (Kegagalan dalam driver dapat menyebabkan crash). Microkernels lebih aman daripada kernel monolitik, karenanya mereka digunakan di banyak perangkat militer.
Kernel monolitik menggunakan sinyal dan soket untuk memastikan IPC sementara pendekatan microkernel menggunakan antrian pesan . 1 st gen dari microkernel buruk dilaksanakan IPC sehingga mereka lambat pada konteks switch.
Menambahkan fitur baru ke sistem monolitik berarti mengkompilasi ulang seluruh kernel sementara Anda dapat menambahkan fitur atau tambalan baru tanpa mengkompilasi ulang
sumber
Windows NT (kernel yang mendasari sistem Windows saat ini) dimulai sebagai desain microkernel yang cukup vanilla. Karena masalah kinerja, semakin banyak kode "userland" bermigrasi ke "mikokernel" ... hari ini struktur mikrokernelnya masih asli.
sumber
Kasusnya adalah bahwa kernel linux adalah hybrid dari monolithic dan microkernel. Dalam implementasi monolitik murni tidak ada modul yang memuat saat runtime.
sumber
Syarat-syarat
monolithic kernel
danmicrokernel
tidak dapat secara serius dibandingkan karena mereka menggambarkan berbagai aspek dari desain kernel (struktur vs ukuran).Kernel monolitik khas adalah kernel SunOS-4.x dan Linux masih serupa, karena Anda secara manual mengkonfigurasi konten kernel dasar.
Kernel Solaris (dimulai dengan 2.1 pada 1992) tidak dapat disebut monolitik lagi karena semua driver dimuat secara otomatis sesuai permintaan dan hanya sebagian kecil yang dimuat saat boot awal.
SunOS-4.x dan Solaris (SunOS-5.x) dan Linux adalah implementasi konteks tunggal. Seluruh kode mereka berjalan dalam konteks MMU tunggal.
Mac OS X didasarkan pada Mach dan berjalan sebagai implementasi multi konteks dengan beberapa proses yang dipisahkan oleh konteks MMU. Dalam konsep ini, driver berada dalam proses yang terpisah dan konteks MMU yang terpisah.
Banyak orang menyebut Mac OS X sebagai "sistem mikrokernel", tetapi mungkin bahwa kernel dasar tidak lebih kecil dari kernel dasar dari Solaris.
Jadi sepertinya bahwa akan lebih baik untuk bicara tentang
single context kernels
vsmulti context kernels
.sumber
microkernel
itu salah pula karena biasanya digunakan untuk sesuatu yang harus dipanggilmulti context kernel
.