Monolitik ve mikro çekirdek arasındaki fark nedir?


Yanıtlar:


114

Monolitik çekirdek, tamamen tek bir adres alanında çalışan tek bir büyük işlemdir. Tek bir statik ikili dosyadır. Tüm çekirdek hizmetleri çekirdek adres alanında bulunur ve yürütülür. Çekirdek, işlevleri doğrudan çağırabilir. Monolitik çekirdek tabanlı işletim sistemlerine örnekler: Unix, Linux.

Mikro çekirdeklerde çekirdek, sunucular olarak bilinen ayrı işlemlere bölünür. Sunucuların bazıları çekirdek alanında, bazıları da kullanıcı alanında çalışır. Tüm sunucular ayrı tutulur ve farklı adres alanlarında çalıştırılır. Sunucular, IPC (İşlemler Arası İletişim) yoluyla mesajlar göndererek birbirlerinden "hizmetleri" çağırır. Bu ayrımın avantajı, bir sunucu arızalandığında diğer sunucuların hala verimli bir şekilde çalışabilmesidir. Mikro çekirdek tabanlı işletim sistemlerine örnekler: Mac OS X ve Windows NT.


36
hem Mac OS X hem de Windows, monolitik çekirdekle daha yakından ilişkili olduğu gibi hibrit çekirdektir. mikro çekirdek örnekleri şöyle olacaktır: Mach QNX AmigaOS Minix
zeitue

7
GNU Hurd , mikro çekirdekte çalışan bir işletim sisteminin harika bir örneğidir. Hala aktif geliştirme aşamasındadır ve bazı popüler Linux dağıtımlarında bir Hurd bağlantı noktası vardır (Debian / Hurd, Arch Hurd, vb.).
beatgammit

78
  1. Monolitik çekirdek tasarımı, 1980'lerin sonunda ortaya çıkan mikro çekirdek fikrinden çok daha eskidir.

  2. Unix ve Linux çekirdekleri monolitiktir, QNX, L4 ve Hurd ise mikro çekirdeklerdir. Mach başlangıçta bir mikro çekirdekti (Mac OS X değil), ancak daha sonra hibrit bir çekirdeğe dönüştürüldü. Minix (sürüm 3'ten önce) tam bir mikro çekirdek değildi çünkü aygıt sürücüleri çekirdeğin bir parçası olarak derlenmişti.

  3. Monolitik çekirdekler genellikle mikro çekirdeklerden daha hızlıdır. İlk mikro çekirdek Mach, çoğu monolitik çekirdekten% 50 daha yavaşken, L4 gibi sonraki çekirdekler monolitik tasarımlardan yalnızca% 2 veya% 4 daha yavaştı.

  4. Monolitik çekirdekler boyut olarak büyükken mikro çekirdekler küçük boyuttadır - genellikle işlemcinin L1 önbelleğine (birinci nesil mikro çekirdekler) sığarlar.

  5. Monolitik çekirdeklerde, aygıt sürücüleri çekirdek alanında bulunurken, mikro çekirdeklerde aygıt sürücüleri kullanıcı alanıdır.

  6. Monolitik çekirdeklerin aygıt sürücüleri çekirdek alanında bulunduğundan, monolitik çekirdekler mikro çekirdeklerden daha az güvenlidir ve sürücülerdeki arızalar (istisnalar) çökmelere neden olabilir (Windows'ta BSOD olarak görüntülenir). Mikro çekirdekler, monolitik çekirdeklerden daha güvenlidir, bu nedenle askeri cihazlarda daha sık kullanılır.

  7. Monolitik çekirdekler, işlemler arası iletişimi (IPC) uygulamak için sinyaller ve soketler kullanır, mikro çekirdekler mesaj kuyruklarını kullanır. 1. nesil mikro çekirdekler IPC'yi iyi uygulamadı ve bağlam anahtarlarında yavaştı - düşük performanslarının nedeni buydu.

  8. Monolitik bir sisteme yeni bir özellik eklemek, tüm çekirdeği veya karşılık gelen çekirdek modülünü (modüler monolitik çekirdekler için) yeniden derlemek anlamına gelirken, mikro çekirdeklerle yeniden derlemeden yeni özellikler veya yamalar ekleyebilirsiniz.


1
MINIX'ten bahsederek hangi sürümü kastediyorsunuz? 3. sürüm, aygıt sürücülerini ve dosya sistemini çekirdekten ayırdı .
orustammanapov

Yaklaşık 8. Bu, Linux'ta bir program yüklediğinizde tüm çekirdek ikilisinin yeniden derlendiği anlamına mı geliyor? Ayrıca bu çekirdek ikilisi nerede? Teşekkürler.
Nikos

@ Nik-Lz: Program değil, özellikler. Programlar genellikle kullanıcı alanında çalışır. Çekirdek uzayında kod çalıştırmak istiyorsanız, iki seçeneğiniz vardır: onu çekirdeğin içine inşa edin veya bir çekirdek modülüyle yükleyin. ref
bayuah

26

Monolitik çekirdek

Zamanlayıcı, Dosya Sistemi, Bellek Yönetimi, Ağ Yığınları, Aygıt Sürücüleri vb. Gibi bir çekirdeğin tüm parçaları, Monolithic Kernel'de çekirdek içindeki tek bir birimde tutulur.

Avantajları

• Daha hızlı işlem

Dezavantajları

• Kilitlenme Güvensizliği • Taşıma Esnekliği • Çekirdek Boyutu patlaması

Örnekler • MS-DOS, Unix, Linux

Mikro çekirdek

Çekirdeğe yalnızca IPC (Süreçler Arası İletişim), temel zamanlayıcı, temel bellek işleme, temel G / Ç ilkelleri vb. Gibi çok önemli parçalar yerleştirilir. İletişim, mesaj geçişi yoluyla gerçekleşir. Diğerleri, Kullanıcı Alanında sunucu işlemleri olarak tutulur

Avantajları

• Çarpmaya Dayanıklı, Taşınabilir, Daha Küçük Boyut

Dezavantajları

• Ek Mesaj Geçişi nedeniyle daha yavaş İşleme

Örnekler • Windows NT


14

1. Monolitik Çekirdek (Saf Monolitik):all

  • Tüm Kernel Hizmetleri tek bileşenden

    (-) ekleme / çıkarma mümkün değil, daha az / Sıfır esnek

    (+) inter Component Communication daha iyidir

örneğin: - Geleneksel Unix

2. Mikro Çekirdek:few

  • çekirdek çekirdekten birkaç hizmet (Bellek yönetimi, CPU yönetimi, IPC vb.), farklı katmanlardan / bileşenlerden diğer hizmetler (Dosya yönetimi, G / Ç yönetimi vb.)

  • Bölünmüş Yaklaşım [Bazı hizmetler ayrıcalıklı (çekirdek) modda ve bazıları Normal (kullanıcı) modunda]

    (+) değişiklikler / yükseltme için esnek

    (-) iletişim ek yükü

örneğin: - QNX vb.

3. Modüler çekirdek (Modüler Monolitik):most

  • Mikro ve Monolitik çekirdek kombinasyonu

  • Modül Koleksiyonu - modüller olabilir -> Statik + Dinamik

  • Sürücüler Modüller şeklinde gelir

örneğin: - Linux Modern İşletim Sistemi


1

Çekirdek tasarımları yelpazesinde iki uç nokta monolitik çekirdekler ve mikro çekirdeklerdir.

Örneğin (klasik) Linux çekirdeği monolitik bir çekirdektir (ve bu yüzden bugüne kadar her ticari işletim sistemi de - aksini iddia etseler de);

Onun kodu, yukarıdaki hizmetlerin tümünü uygulayan tek bir işleme yol açan tek bir C dosyasıdır.
Linux çekirdeğinin kapsüllenmesini örneklemek için, Linux çekirdeğinin standart C kitaplıklarının hiçbirine erişimi olmadığını belirtmek isteriz. Aslında Linux çekirdeği, printf gibi temel C kütüphanesi işlevlerini kullanamaz. Bunun yerine kendi yazdırma işlevini (baskı olarak adlandırılır) uygular.

Linux çekirdeğinin bu inzivası ve kendi kendini kapsama, Linux çekirdeğine ana avantajını sağlar: Çekirdek tek bir adres alanında bulunur1, bu da tüm özelliklerin herhangi bir mesaj geçişine başvurmadan mümkün olan en hızlı şekilde iletişim kurmasını sağlar. Özellikle, monolitik bir çekirdek, sistemin tüm aygıt sürücülerini uygular.

Ancak bu, monolitik bir çekirdeğin ana dezavantajıdır: herhangi bir yeni desteklenmeyen donanımın tanıtımı, çekirdeğin (ilgili bölümlerde) yeniden yazılmasını, yeniden derlenmesini ve tüm işletim sisteminin yeniden kurulmasını gerektirir.
Daha da önemlisi, herhangi bir aygıt sürücüsü çökerse, sonuç olarak tüm çekirdek zarar görür. Donanım eklemelerine ve donanım çökmelerine yönelik bu modüler olmayan yaklaşım, çekirdekler için diğer aşırı tasarım yaklaşımını desteklemek için ana argümandır. Mikro çekirdek, bir anlamda, yalnızca en temel işletim sistemi hizmetlerini (süreç yönetimi ve dosya sistemi yönetimi gibi) barındıran minimalist bir çekirdektir. Bir mikro çekirdekte, aygıt sürücüleri, işletim sistemi çalışırken aygıt sürücülerinin eklenmesine ve kaldırılmasına izin vererek çekirdeğin dışında yer alır ve çekirdeğin değiştirilmesini gerektirmez.


-2

Monolitik çekirdek, çekirdek çekirdek kısmı ile birlikte tüm çekirdek hizmetlerine sahiptir, bu nedenle ağırdır ve hız ve performans üzerinde olumsuz etkisi vardır. Öte yandan mikro çekirdek, performans ve hızda artışa neden olan hafiftir.
Aynı soruyu wordpress sitesinde de cevapladım. Monolitik, mikro çekirdek ve ekzokernel arasındaki farkı tablo şeklinde görmek için burayı ziyaret edebilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.