Monolitik ve mikro çekirdek arasındaki farkı örneklerle açıklayabilir misiniz? Ayrıca çekirdeğin diğer sınıflandırmaları?
Monolitik ve mikro çekirdek arasındaki farkı örneklerle açıklayabilir misiniz? Ayrıca çekirdeğin diğer sınıflandırmaları?
Yanıtlar:
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.
Monolitik çekirdek tasarımı, 1980'lerin sonunda ortaya çıkan mikro çekirdek fikrinden çok daha eskidir.
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.
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ı.
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.
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.
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.
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.
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.
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
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
Ç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.
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 .