Adakah yang bisa menjelaskan dengan contoh perbedaan antara kernel monolitik dan mikro? Juga klasifikasi lain dari kernel?
Adakah yang bisa menjelaskan dengan contoh perbedaan antara kernel monolitik dan mikro? Juga klasifikasi lain dari kernel?
Jawaban:
Kernel monolitik adalah satu proses besar yang berjalan seluruhnya dalam satu ruang alamat. Ini adalah file biner statis tunggal. Semua layanan kernel ada dan dijalankan di ruang alamat kernel. Kernel dapat menjalankan fungsi secara langsung. Contoh OS berbasis kernel monolitik: Unix, Linux.
Di microkernels, kernel dipecah menjadi proses terpisah, yang dikenal sebagai server. Beberapa server berjalan di ruang kernel dan beberapa berjalan di ruang pengguna. Semua server disimpan terpisah dan dijalankan di ruang alamat yang berbeda. Server meminta "layanan" dari satu sama lain dengan mengirimkan pesan melalui IPC (Interprocess Communication). Pemisahan ini memiliki keuntungan bahwa jika satu server gagal, server lain masih dapat bekerja secara efisien. Contoh OS berbasis mikrokernel: Mac OS X dan Windows NT.
Desain kernel monolitik jauh lebih tua dari ide mikrokernel, yang muncul di akhir tahun 1980-an.
Kernel Unix dan Linux bersifat monolitik, sedangkan QNX, L4 dan Hurd adalah microkernels. Mach awalnya merupakan mikrokernel (bukan Mac OS X), tetapi kemudian diubah menjadi kernel hybrid. Minix (sebelum versi 3) bukanlah mikrokernel murni karena driver perangkat dikompilasi sebagai bagian dari kernel.
Kernel monolitik biasanya lebih cepat dari pada microkernels. Mikrokernel Mach pertama 50% lebih lambat dari kebanyakan kernel monolitik, sementara yang lebih baru seperti L4 hanya 2% atau 4% lebih lambat dari desain monolitik.
Kernel monolitik berukuran besar, sedangkan mikrokernel berukuran kecil - biasanya muat ke dalam cache L1 prosesor (microkernels generasi pertama).
Di kernel monolitik, driver perangkat berada di ruang kernel sedangkan di microkernels, driver perangkat adalah ruang pengguna.
Karena driver perangkat kernel monolitik berada di ruang kernel, kernel monolitik kurang aman daripada microkernels, dan kegagalan (pengecualian) pada driver dapat menyebabkan crash (ditampilkan sebagai BSOD di Windows). Mikro kernel lebih aman daripada kernel monolitik, oleh karena itu lebih sering digunakan di perangkat militer.
Kernel monolitik menggunakan sinyal dan soket untuk mengimplementasikan komunikasi antar proses (IPC), mikrokernel menggunakan antrian pesan. Microkernels generasi pertama tidak mengimplementasikan IPC dengan baik dan lambat pada sakelar konteks - itulah yang menyebabkan performa buruk mereka.
Menambahkan fitur baru ke sistem monolitik berarti mengkompilasi ulang seluruh kernel atau modul kernel yang sesuai (untuk kernel monolitik modular), sedangkan dengan kernel mikro Anda dapat menambahkan fitur atau tambalan baru tanpa kompilasi ulang.
Kernel monolitik
Semua bagian kernel seperti Scheduler, File System, Memory Management, Networking Stacks, Device Drivers, dll., Dipertahankan dalam satu unit di dalam kernel di Monolithic Kernel
Keuntungan
• Pemrosesan lebih cepat
Kekurangan
• Crash Insecure • Porting Inflexibility • Ledakan Ukuran Kernel
Contoh • MS-DOS, Unix, Linux
Kernel mikro
Hanya bagian yang sangat penting seperti IPC (Inter process Communication), penjadwal dasar, penanganan memori dasar, primitif I / O dasar, dll., Yang dimasukkan ke dalam kernel. Komunikasi terjadi melalui penyampaian pesan. Lainnya dipertahankan sebagai proses server di Ruang Pengguna
Keuntungan
• Tahan Gangguan, Portabel, Ukuran Lebih Kecil
Kekurangan
• Proses lebih lambat karena Message Passing tambahan
Contoh • Windows NT
1. Kernel Monolitik (Monolitik Murni):all
Semua Layanan Kernel Dari satu komponen
(-) penambahan / penghapusan tidak dimungkinkan, kurang / Nol fleksibel
(+) Komunikasi antar Komponen lebih baik
misalnya: - Unix Tradisional
2. Kernel Mikro:few
beberapa layanan (Manajemen memori, manajemen CPU, IPC dll) dari kernel inti, layanan lain (Manajemen file, manajemen I / O, dll.) dari berbagai lapisan / komponen
Pendekatan Terpisah [Beberapa layanan dalam mode privileged (kernel) dan beberapa dalam mode Normal (pengguna)]
(+) fleksibel untuk perubahan / gradasi naik
(-) overhead komunikasi
misalnya: - QNX dll.
3. Kernel modular (Modular Monolithic):most
Kombinasi kernel Mikro dan Monolitik
Kumpulan Modul - modul bisa -> Statis + Dinamis
Driver datang dalam bentuk Modul
mis .: - Linux Modern OS
Dalam spektrum desain kernel, dua titik ekstrem adalah kernel monolitik dan mikro.
Kernel Linux (klasik) misalnya adalah kernel monolitik (dan begitu juga setiap OS komersial hingga saat ini - meskipun mereka mungkin mengklaim sebaliknya);
Dalam kodenya adalah file C tunggal yang memunculkan proses tunggal yang mengimplementasikan semua layanan di atas.
Sebagai contoh enkapsulasi kernel Linux, kami menyatakan bahwa kernel Linux bahkan tidak memiliki akses ke salah satu pustaka C standar. Memang kernel Linux tidak dapat menggunakan fungsi pustaka C yang belum sempurna seperti printf. Sebaliknya, ia mengimplementasikan fungsi pencetakannya sendiri (disebut cetakan).
Pengasingan kernel Linux dan penahanan diri ini memberi kernel Linux keuntungan utamanya: kernel berada dalam satu ruang alamat1 yang memungkinkan semua fitur untuk berkomunikasi secepat mungkin tanpa menggunakan jenis penyampaian pesan apa pun. Secara khusus, kernel monolitik mengimplementasikan semua driver perangkat sistem.
Namun ini adalah kelemahan utama dari kernel monolitik: pengenalan perangkat keras baru yang tidak didukung memerlukan penulisan ulang kernel (di bagian yang relevan), kompilasi ulang, dan penginstalan ulang seluruh OS.
Lebih penting lagi, jika ada driver perangkat yang crash, seluruh kernel akan menderita sebagai akibatnya. Pendekatan non-modular untuk penambahan perangkat keras dan kerusakan perangkat keras adalah argumen utama untuk mendukung pendekatan desain ekstrem lainnya untuk kernel. Mikrokernel dalam arti tertentu adalah kernel minimalis yang hanya menampung layanan OS yang paling dasar (seperti manajemen proses dan manajemen sistem file). Dalam mikrokernel driver perangkat berada di luar kernel yang memungkinkan penambahan dan penghapusan driver perangkat saat OS berjalan dan tidak memerlukan pergantian kernel.
Kernel monolitik memiliki semua layanan kernel bersama dengan bagian inti kernel, sehingga berat dan berdampak negatif pada kecepatan dan kinerja. Di sisi lain, kernel mikro ringan menyebabkan peningkatan kinerja dan kecepatan.
Saya menjawab pertanyaan yang sama di situs wordpress. Untuk perbedaan monolitik, mikrokernel dan exokernel dalam bentuk tabel, Anda dapat mengunjungi di sini