Mikro çekirdeğin ve monolitik çekirdeğin performansı


14

Bir mikro çekirdek, tüm sürücüleri kullanıcı-alanı programları olarak uygular ve IPC gibi temel özellikleri çekirdeğin içine uygular. Bununla birlikte, monolitik bir çekirdek, sürücüleri çekirdeğin bir parçası olarak uygular (örneğin çekirdek modunda çalışır).

Mikro çekirdeğin monolitik çekirdeklerden daha yavaş olduğu iddialarını okudum, çünkü kullanıcı alanındaki sürücüler arasında iletiyi işlemek zorundalar. Bu doğru mu?

Uzun bir süre boyunca, çoğu çekirdek monolitikti, çünkü donanım mikro çekirdekleri hızlı bir şekilde çalıştırmak için çok yavaştı. Ancak, şimdi GNU / Hurd, Mac OS X, Windows NT hattı vb.Gibi birçok mikro çekirdek ve hibrit çekirdek var.

Peki, mikro çekirdeklerin performansı hakkında bir şey değişti mi? Mikro çekirdeklerin bu eleştirisi bugün hala geçerli mi?

Yanıtlar:


11

Her zaman olduğu gibi, performansla ilgili soruların yanıtı (veya en azından önsöz): sorun alanınızı öğrenin, karşılaştırmalı karşılaştırmalar yapın ve erken optimizasyonun ne olduğunu hatırlayın .

İlk olarak, kapsamlı bir kıyaslama denemesi, monolitik çekirdekleri, eşdeğer bir şekilde çalışan mevcut nesil mikro çekirdek sistemleriyle karşılaştırmamıştır. Bu nedenle, bu çekirdeklerin belirli öğelerini karşılaştıran denemeler olsa da, sorunuzun boyamak istediği "büyük resmi" temsil etmeyeceklerdir.

Bununla birlikte, mikro çekirdeklerde çekirdek performansının çılgınca farklı gözlemleri vardır; örneğin, L4 mikro çekirdeği ailesinin, IPC performansının Mach çekirdeğinden daha büyük bir mertebeye sahip olduğu söylenebilir. Ancak bu on yıldaki her Apple cihazı Mach'ı çalıştırıyor ve çok hızlı çalışıyor gibi görünüyor, değil mi?

Hikayenin ahlakı, hangi çekirdek mimarisini kullanacağına karar veren herkesin nihai hedeflerinin ne olduğuna karar vermesi gerektiğidir. Mikro çekirdek sistemleri (uygun şekilde uygulandığında, elbette) daha güvenli, bakımı ve modülerdir. Bununla birlikte, uygun şekilde mimarlık yapmak zor olabilir ve monolitik bir uygulama üzerinde performans yükü olabilir. Monolitik bir çekirdek daha hızlı olacak, ancak güvenliği uygulamak daha zor olacak ve daha az modüler ve özelleştirilmesi daha kolay olacaktır.

Çekirdek mimariniz, nihai hedefinizin ne olduğuna dayanmalıdır.

(Ve her şey başarısız olduğunda, her iki şekilde de deneyin ve ne olduğunu görün.)


"Ama bu on yılın her Apple cihazı Mach'ı çalıştırıyor ve çok hızlı çalışıyor gibi görünüyorlar, değil mi?" Bu sadece kısmen doğrudur. "Darwin'in çekirdeği XNU, OSF'den OSFMK 7.3 (Açık Yazılım Vakfı Mach Çekirdeği), BSD'nin çeşitli unsurları (işlem modeli, ağ yığını ve sanal dosya sistemi dahil) ve nesne yönelimli bir hibrid çekirdek olan XNU'dur. G / Ç Kiti olarak adlandırılan aygıt sürücüsü API'sı Hibrit çekirdek tasarımı, bir mikro çekirdeğin esnekliğini ve monolitik bir çekirdeğin performansını sağlar. "
Behrang Saeedzadeh

4

Windows NT ve Apple'ın XNU çekirdeğini melez yerine monolitik olarak adlandırmayı tercih ederim. Uygulamada melez sınıflandırmasının fazla bir anlamı olduğunu bulamıyorum. Aslında XNU'nun orijinal mühendislerinden biri onu monolitik olarak adlandırıyor [1].

Performans konusunda, monolitik ve mikro bulabileceğim tek gerçekten derinlemesine karşılaştırma, "Aşırı Yüksek Performanslı Bilgi İşlem veya Neden Microkerenels Suck" [2] ve "Microkernels Suck Yapıyor mu?"

Modülerlik ve özelleştirilebilirlik, monolitik çekirdeklerdeki doğal sınırlamalardan daha fazla tasarım konusudur. Örneğin Linux çekirdeği, derleme zamanı seçeneklerine ve belirli yamaların uygulanmasına bağlı olarak birkaç megabayttan yaklaşık bir megabayta kadar değişebilir. Linux'un 15 milyon artı kod satırının büyük çoğunluğu yüklenebilir çekirdek modülleridir. Temel çekirdekten ayrı olarak derlenirler ve yalnızca gerektiğinde yüklenirler. Bu modüller sürücüleri ve sistem çağrılarını uygulayabilir (hatta temel sistem çağrılarını geçersiz kılar).

Mikro çekirdeğin tartışmasız bir avantaja sahip olduğu iki alan, düşük bellek (<= 512k ram) veya havayolu uçuş sistemleri veya nükleer reaktör kontrol sistemleri gibi gerçek zamanlı işletim sistemlerinde bulunur.

Düzenleme: Her iki çekirdek mimarisinin avantajları ve dezavantajları hakkında daha fazla konuşursak, Gernot Heiser sunumunun sonunda serbestçe itiraf eder [3] monolitik çekirdeklerin doğası gereği daha performanslı olduğunu çünkü bir mikro çekirdeğin her zaman fazladan ek yükü vardır. Yine de, bu ek yük, güvenilirliğin artmasına neden olur, bu nedenle RTOS'un mikro çekirdeklerinin baskınlığı.

[1] Louis G. Gerbarg, "Mac OS X'te Gelişmiş Senkronizasyon: Unix'i SMP ve Gerçek Zamanlı Olarak Genişletme", BSDCon 2002 Konferansı Bildiriler Kitabı, s.

[2] Chistoph Lameter, "Aşırı Yüksek Performanslı Bilgi İşlem veya Neden Mikro Çekirdekler Suck", 2007 Linux Sempozyumu, Cilt 1

[3] Gernot Heiser, "Mikro Çekirdekler Suck mi?", 9. Linux.conf.au, Ocak, 2008


XNU ve Windows NT'yi "karma" çekirdekler olarak sınıflandırıyordum
mmk

Hoşgeldin için teşekkürler @DW. Yazımı biraz temizledim ve alıntı ekledim.
Ironlenny

@mmk Üzgünüm, onlara melez dedin, görevimi yapmak ve yanlış anlamak için acelem vardı.
Ironlenny
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.