5Aug

Linux Çekirdeği nedir ve Ne Yapıyor?


13 milyonun üzerinde kod satırı ile Linux çekirdeği, dünyanın en büyük açık kaynak projelerinden biridir ancak çekirdek nedir ve bunun için ne kullanılır?

Peki Çekirdek Nedir?

Bir çekirdek, bilgisayarınızdaki donanımla arabirim yapan, kolay değiştirilebilir en düşük seviyedeki yazılımdır."Kullanıcı modunda" çalışan tüm uygulamalarınızın fiziksel donanıma bağlanmasından ve sunucular olarak bilinen işlemlerin birbirinden işlemler arası iletişim( IPC) kullanarak birbirinden bilgi almalarına izin vermek için sorumludur.

Çeşitli Çekirdek Türleri

Elbette, bir çekirdek oluşturmak için farklı yollar ve mimari düşünceler sıfırdan oluşturulurken. Genel olarak çekirdeklerin çoğu üç çeşitten birine ayrılır: monolitik, mikrokernel ve hibrid. Linux, monolitik bir çekirdek iken, OS X( XNU) ve Windows 7 melez çekirdekleri kullanmaktadır. Daha sonra daha ayrıntılı olarak bilgi alabilmek için üç kategoriyi hızlı bir şekilde inceleyelim.


Görüntü uptown patlamış mısır

Microkernel


Bir mikrokernel, yalnızca CPU'nun, bellek ve IPC gibi şeyleri yönetme yaklaşımını gerektirir. Bir bilgisayardaki diğer her şey bir aksesuar olarak görülebilir ve kullanıcı modunda ele alınabilir.İşletim sisteminin donanıma yine aynı şekilde erişmeye çalıştığı sürece, mikrokernellerin taşınabilirlik avantajı vardır, çünkü ekran kartınızı veya işletim sisteminizi değiştirirseniz endişelenmeniz gerekmez. Mikrokerneller hem bellek hem de kurulum alanı için çok küçük bir alana sahiptir ve daha güvenli olma eğilimindedirler, çünkü yalnızca belirli işlemler, kullanıcı modunda yönetici modu olarak yüksek izinlere sahip değildir.

Artıları

  • Taşınabilirlik
  • Küçük kurulum alanı
  • Küçük bellek alanı
  • Güvenlik

Eksileri

  • Donanım sürücüler aracılığıyla daha soyutlanmış
  • Sürücüler kullanıcı modunda olduğu için yavaş tepki verebilir
  • İşlemler bilgi almak için sıraya girmek zorunda kalıyor
  • İşlemler yapamıyorbeklemeden başka işlemlere erişebilir

Tekli Çekirdek
Monolitik çekirdekler mikrokronellerin tersi; çünkü sadece CPU, bellek ve IPC'yi değil aynı zamanda aygıt sürücüleri, dosya sistemi yönetimi ve sistem sunucu çağrıları gibi şeyleri de içerir. Monolitik çekirdekler donanıma ve çoklu görevlere erişmede daha iyi olma eğilimindedir, çünkü bir program bellekten veya başka bir işlem çalışırken bilgi almaya ihtiyaç duyarsa, erişmek için daha doğrudan bir satıra sahiptir ve işleri gerçekleştirmek için bir sıraya girmek zorunda kalmaz. Bununla birlikte, bunun nedeni sorunlara neden olabilir, çünkü amir modunda çalışan daha çok şey varsa, biri düzgün davranmıyorsa sisteminizi daha çok şey indirebilir.

Artıları

  • Programlar için donanıma daha doğrudan erişim
  • Her biri birbirleri arasında iletişim kurmak için işlemler için daha kolaydır
  • Cihazınız destekleniyorsa, ek yüklemeler olmadan çalışmalıdır
  • İşlemciler, işlemci süresi için bir kuyruk olmadığından daha hızlı tepki verir

Eksileri

  • Büyükkurulum alanı
  • Geniş bellek alanı
  • Her şey yönetici modunda çalıştığından daha az güvenliklidir


Flickr'da schoschie üzerinden görüntü

Hibrid Çekirdek
Hibrit çekirdeklerin, kullanıcı modunda çalıştırmak istediklerini ve denetleyicide çalıştırmak istediklerini seçme ve seçme özelliği vardırmodu. Genellikle, aygıt sürücüleri ve dosya sistemi G / Ç gibi şeyler kullanıcı modunda çalıştırılırken, IPC ve sunucu çağrıları gözetmen modunda tutulur. Bu, her iki dünyanın da en iyisini verir ancak sürücü üreticisinin sorumluluğunun tamamı onlara kalmış olduğundan donanım üreticisinin daha çok çalışması gerekir. Aynı zamanda, mikro çekirdeklerin doğal olduğu bazı gecikme sorunlarına da sahip olabilir.

Artıları

  • Geliştirici, kullanıcı modunda çalıştırılanları ve denetleyici modunda çalıştırmayı seçebilir ve seçebilir
  • Tek parçiyeli çekirdeğe göre daha küçük kurulum alanı
  • Diğer modellere göre daha esnek

Eksileri

  • Mikrokernel
  • ile aynı işlem gecikmesi yaşayabilir. Aygıt sürücüleri kullanıcı tarafından yönetilmelidir( genellikle)

Linux Çekirdeği Dosyaları Nerededir?

Ubuntu'daki çekirdek dosyası, / boot klasörünüzde saklanır ve vmlinuz- sürümü olarak adlandırılır. Vmlinuz adı, çekirdeklerini 60'larda basitçe "unix" olarak adlandırdıkları unix dünyasından gelmektedir, bu yüzden Linux, çekirdeğini "linux" olarak 90'lı yıllarda ilk geliştirildiğinde aramaya başlamıştır.

Daha kolay çok görevli yetenekler için sanal bellek geliştirildiğinde, çekirdeğin sanal belleği desteklediğini göstermek için dosyanın önüne "vm" yazılmıştır. Bir süre Linux çekirdeği vmlinux olarak adlandırıldı, ancak çekirdek resmi mevcut önyükleme belleğine sığmayacak kadar büyüdü; böylece çekirdek resmi sıkıştırıldı ve biten x, zlib sıkıştırmasıyla sıkıştırıldığını göstermek için bir z olarak değiştirildi. Bu aynı sıkıştırma daima LZMA veya BZIP2 ile değiştirilmez ve bazı çekirdeklere sadece zImage denir.

Sürüm numaralandırma A.B.C.D biçimindedir. Burada A.B muhtemelen 2.6, C sizin sürümünüz, ve D yamalarınızı veya düzeltmelerinizi gösterir.

/ boot klasöründe ayrıca initrd.img-version, system.map-version ve config-version adlı çok önemli dosyalar da olacaktır. Initrd dosyası, gerçek çekirdek dosyasını ayıklayan ve çalıştıran küçük bir RAM disk olarak kullanılır. System.map dosyası, çekirdeği tam olarak yüklemeden önce bellek yönetimi için kullanılır ve yapılandırma dosyası, çekirdek imajına derlendiğinde hangi seçenekleri ve modülleri yükleyeceğini çekirdeğe bildirir.

Linux Çekirdeği Mimarisi

Linux çekirdeği tek parça olduğundan, diğer çekirdek türlerine göre en geniş alanı ve en karmaşıklığı vardır. Bu, Linux'un ilk günlerinde tartışmalara giren ve monolitik çekirdeklerin sahip olduğu aynı tasarım kusurlarının bazılarını taşıyan bir tasarım özelliğiydi.

Linux çekirdek geliştiricilerinin bu kusurları ortadan kaldırmak için yapmış olduğu bir şey, çekirdek modüllerinin çalışma zamanında yüklenip kaldırılmasını sağlamaktı; yani çekirdeğinizin özelliklerini anında ekleyebilir veya kaldırabilirsiniz. Bu, sunucu işlemlerini çalıştıran, düşük seviyeli sanallaştırma gibi modülleri içeren, yalnızca çekirdek için donanım işlevselliği eklemenin ötesine geçebilir; ancak, bazı durumlarda bilgisayarınızı yeniden başlatmaya gerek kalmadan tüm çekirdeğin değiştirilmesine izin verebilir.

Hiçbir zaman yeniden başlatmanıza gerek kalmadan bir Windows hizmet paketine yükseltebilseniz düşünün. ..

Çekirdek Modülleri

Windows'un her sürücüsü önceden yüklenmiş halde bulunsaydı ve yalnızca ihtiyaç duyduğunuz sürücüleri açmak zorunda kaldıysanız ne olur? Temelde çekirdek modüllerinin Linux için yaptıkları budur.Çekirdek modülleri, aynı zamanda bir yüklenebilir çekirdek modülü( LKM) olarak da bilinir; çekirdeğin tüm donanımınızla çalışabilmesi için kullanılabilir belleğinizin tümünü tüketmeden gereklidir.

Bir modül tipik olarak cihazlar, dosya sistemleri ve sistem çağrıları gibi temel çekirdeğe işlevsellik kazandırır. LKM'lerin dosya uzantısı. ko'dur ve genellikle /lib/ modules dizininde saklanır. Modüler yapısından dolayı, menuconfig komutuyla başlatma sırasında veya /boot/ yapılandırma dosyasını düzenleyerek veya modprobe komutu ile anında modülleri yükleyebilir ve kaldırabilirsiniz modülleri ayarlayarak çekirdeğinize kolayca özelleştirebilirsiniz.

Üçüncü parti ve kapalı kaynak modülleri Ubuntu gibi bazı dağıtımlarda mevcuttur ve modüllerin kaynak kodu mevcut olmadığından öntanımlı olarak yüklenmeyebilir. Yazılımın geliştiricisi( diğer bir ifadeyle nVidia, ATI) kaynak kodu sağlamaz, aksine kendi modüllerini oluşturur ve dağıtım için gerekli olan. ko dosyalarını derler. Bu modüller birada olduğu gibi özgür olsa da, konuşmada olduğu gibi özgür değildirler ve bu yüzden bazı dağıtımlar tarafından dahil edilmemiştir, çünkü yöneticiler özgür olmayan yazılım sağlayarak çekirdeği "inceler" diye düşünürler.

Bir çekirdek büyü değil, ancak düzgün çalışan herhangi bir bilgisayar için tamamen gerekli. Linux çekirdeği, OS X ve Windows'dan farklıdır, çünkü çekirdek düzeyinde sürücüleri barındırıyor ve birçok şeyi "açık olarak" desteklediği hale getiriyor. Umarım yazılımlarınızın ve donanımlarınızın birlikte nasıl çalıştığını ve bilgisayarınızı ne önyükleme yapmanız gerektiğini biraz daha öğreneceksinizdir.

Kernel.org
Resim tarafından ingridtaylar