Apa perbedaan antara Monolitik dan Mikro Kernel?

Jawaban:

113

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.

sariful islam
sumber
35
baik Mac OS X dan Windows adalah kernel hybrid karena lebih dekat hubungannya dengan kernel monolitik. contoh kernel mikro adalah: Mach QNX AmigaOS Minix
zeitue
7
GNU Hurd adalah contoh bagus dari sebuah OS yang berjalan pada mikrokernel. Ini masih dalam pengembangan aktif dan beberapa distro Linux populer memiliki port Hurd (Debian / Hurd, Arch Hurd, dll).
beatgammit
77
  1. Desain kernel monolitik jauh lebih tua dari ide mikrokernel, yang muncul di akhir tahun 1980-an.

  2. 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.

  3. 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.

  4. Kernel monolitik berukuran besar, sedangkan mikrokernel berukuran kecil - biasanya muat ke dalam cache L1 prosesor (microkernels generasi pertama).

  5. Di kernel monolitik, driver perangkat berada di ruang kernel sedangkan di microkernels, driver perangkat adalah ruang pengguna.

  6. 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.

  7. 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.

  8. 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.

simplePerson43
sumber
1
dengan menyebutkan MINIX versi mana yang kamu maksud? Versi ketiga telah memisahkan driver perangkat dan sistem file dari kernel .
orustammanapov
Tentang 8. Apakah itu berarti bahwa ketika Anda menginstal program di Linux, seluruh biner kernel dikompilasi ulang? Juga di mana biner kernel ini? Terima kasih.
Nikos
@ Nik-Lz: Bukan program, tapi fitur. Program biasanya berjalan di ruang pengguna. Jika Anda ingin menjalankan kode di ruang kernel, Anda memiliki dua opsi: membangunnya di kernel, atau memuatnya dengan modul kernel. ref
bayuah
25

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


sumber
14

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

Naman Vaishnav
sumber
1

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.

TheLogicGuy
sumber
-2

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

Yogesh Jilhawar
sumber