Anasayfa » nasıl » Linux Çekirdeği Nedir ve Ne Yapar?

    Linux Çekirdeği Nedir ve Ne Yapar?


    13 milyondan fazla kod satırıyla Linux çekirdeği, dünyanın en büyük açık kaynaklı projelerinden biridir, ancak çekirdek nedir ve ne için kullanılır??

    Peki, çekirdek nedir?

    Bir çekirdek, bilgisayarınızdaki donanıma arabirim oluşturan en kolay değiştirilebilen yazılım seviyesidir. “Kullanıcı modunda” çalışan tüm uygulamalarınızı fiziksel donanıma kadar birbirine bağlamak ve işlemciler arası iletişim (IPC) kullanarak birbirlerinden bilgi almak için sunucular olarak bilinen işlemlerin yapılmasından sorumludur..

    Farklı Çekirdek Çeşitleri

    Elbette, sıfırdan inşa ederken bir çekirdeği ve mimari düşünceleri inşa etmenin farklı yolları vardır. Genel olarak, çoğu çekirdek üç türden birine ayrılır: monolitik, mikro çekirdek ve melez. Linux, monolitik bir çekirdekken, OS X (XNU) ve Windows 7 hibrit çekirdekler kullanmaktadır. Üç kategoride hızlıca bir tur atalım, böylece daha sonra daha fazla ayrıntıya geçelim.


    Tarafından görüntü şehir dışına patlamış mısır

    microkernel
    Bir mikro çekirdek, yalnızca sahip olduklarını yönetme yaklaşımını benimser: CPU, bellek ve IPC. Bir bilgisayardaki hemen hemen her şey bir aksesuar olarak görülebilir ve kullanıcı modunda kullanılabilir. Mikro çekirdeklerin taşınabilirlik avantajı vardır, çünkü ekran kartınızı veya hatta işletim sisteminizi donanıma aynı şekilde erişmeye çalıştığı sürece işletim sisteminizi değiştirirseniz endişelenmenize gerek yoktur. Mikro çekirdeğin hem bellek hem de yükleme alanı için çok az yer kaplaması vardır ve bunlar daha güvenli olma eğilimindedir, çünkü yalnızca denetleyici modu olarak yüksek izinlere sahip olmayan belirli kullanıcı işlemleri kullanıcı modunda çalışır.

    Artıları

    • taşınabilirlik
    • Küçük kurulum alanı
    • Küçük bellek ayak izi
    • Güvenlik

    Eksileri

    • Donanım sürücülerden daha fazla soyutlanır
    • Sürücüler kullanıcı modunda olduğundan donanım daha yavaş tepki verebilir
    • İşlemler bilgi almak için sırada beklemek zorunda
    • İşlemler beklemeden diğer işlemlere erişemez

    Monolitik Çekirdek
    Monolitik çekirdekler mikro çekirdeklerin zıddıdır, çünkü yalnızca CPU, bellek ve IPC'yi kapsamazlar, aynı zamanda aygıt sürücüleri, dosya sistemi yönetimi ve sistem sunucusu çağrıları gibi şeyleri de içerirler. Monolitik çekirdekler donanıma ve çoklu görevlere erişimde daha iyi olma eğilimindedir çünkü bir programın bellekten veya çalışan başka bir işlemden bilgi alması gerekiyorsa, erişmek için daha doğrudan bir çizgiye sahiptir ve işleri bitirmek için sıra beklemek zorunda değildir. Ancak bu sorunlara neden olabilir, çünkü denetleyici modunda çalışanlar ne kadar fazla olursa, düzgün davranmazsa sisteminizi o kadar çok şey çökertir.

    Artıları

    • Programlar için donanıma daha doğrudan erişim
    • Farklı ortamlar arasında iletişim kurmak için daha kolay işlemler
    • Cihazınız destekleniyorsa, ek bir kurulum yapmadan çalışması gerekir.
    • İşlemciler daha hızlı tepki veriyor çünkü işlemci süresi için bir sıra yok

    Eksileri

    • Büyük yükleme alanı
    • Geniş bellek alanı
    • Her şey süpervizör modunda çalıştığı için daha az güvenli


    Flickr'da schoschie ile görüntü

    Hibrit Çekirdek
    Hibrit çekirdekler, kullanıcı modunda neyi çalıştırmak istediklerini ve gözetmen modunda neyi çalıştırmak istediklerini seçme ve seçme yeteneğine sahiptir. Çoğu zaman 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 çoğu zaman donanım üreticisinin daha fazla çalışmasını gerektirir, çünkü tüm sürücü sorumluluğu kendilerine aittir. Ayrıca, mikro çekirdeklere özgü bazı gecikme sorunlarına da sahip olabilir..

    Artıları

    • Geliştirici, kullanıcı modunda neyin çalıştığını ve gözetmen modunda neyin çalışacağını seçebilir ve seçebilir
    • Monolitik çekirdekten daha küçük yükleme alanı
    • Diğer modellerden daha esnek

    Eksileri

    • Mikro çekirdek ile aynı süreç gecikmesinden muzdarip olabilir
    • Aygıt sürücülerinin kullanıcı tarafından yönetilmesi gerekir (genellikle)

    Linux Çekirdek Dosyaları Nerede?

    Ubuntu'daki çekirdek dosyası, / boot klasörünüzde saklanır ve vmlinuz olarak adlandırılır.-versiyon. Vmlinuz ismi, 60'larda çekirdeklerini basitçe “unix” olarak adlandırdıkları unix dünyasından geliyor, böylece Linux, 90'larda ilk kez geliştirildiğinde, çekirdeklerini “linux” olarak adlandırmaya başladı..

    Daha fazla çoklu görev yeteneği için sanal bellek geliştirildiğinde, çekirdeğin sanal belleği desteklediğini göstermek için dosyanın önüne “vm” kondu. Bir süredir Linux çekirdeği vmlinux olarak adlandırıldı, ancak çekirdek mevcut önyükleme belleğine sığmayacak kadar büyüdü, böylece çekirdek görüntüsü sıkıştırıldı ve son x, zlib sıkıştırması ile sıkıştırıldığını göstermek için bir z olarak değiştirildi. Bu aynı sıkıştırma her zaman kullanılmaz, genellikle LZMA veya BZIP2 ile değiştirilir ve bazı çekirdeklere basitçe zImage adı verilir..

    Sürüm numaralandırma, A.B.C.D biçiminde olacaktır; burada A.B muhtemelen 2.6 olacaktır; C, sürümünüz olur ve D, düzeltme eklerinizi veya düzeltmelerinizi gösterir..

    / Boot klasöründe ayrıca initrd.img-version, system.map-version ve config-version olarak adlandırılan diğer çok önemli dosyalar da olacaktır. İnitrd dosyası, asıl çekirdek dosyasını çıkartıp çalıştıran küçük bir RAM diski olarak kullanılır. System.map dosyası, çekirdek tamamen yüklenmeden önce bellek yönetimi için kullanılır ve config dosyası çekirdeğe, derlenirken çekirdek görüntüsüne hangi seçenekleri ve modülleri yükleyeceğini söyler..

    Linux Çekirdek Mimarisi

    Linux çekirdeği yekpare olduğu için, diğer çekirdek türleri için en büyük ayakizine ve en karmaşıklığına sahiptir. Bu, Linux'un ilk günlerinde oldukça tartışılan bir tasarım özelliği idi ve yine de monolitik çekirdeğin sahip olduğu aynı tasarım kusurlarını taşıyordu..

    Linux çekirdeği geliştiricilerin bu kusurların üstesinden gelmek için yaptığı şeylerden biri, çalışma zamanında yüklenebilecek ve boşaltılabilen çekirdek modüllerini yapmaktı, bu da anında çekirdeğinizin özelliklerini ekleyip kaldırabileceğiniz anlamına geliyordu. Bu, düşük seviyeli sanallaştırma gibi sunucu işlemlerini çalıştıran modülleri dahil ederek çekirdeğe yalnızca donanım işlevi eklemenin ötesine geçebilir, ancak bazı durumlarda bilgisayarınızı yeniden başlatmanıza gerek kalmadan tüm çekirdeğin değiştirilmesine de izin verebilir.

    Yeniden başlatmak zorunda kalmadan Windows hizmet paketine yükseltme yapabileceğinizi düşünün…

    Çekirdek Modülleri

    Windows her sürücüyü önceden yüklüyse ve ihtiyacınız olan sürücüleri açmanız gerekiyorsa ne olacak? Esasen çekirdek modüllerinin Linux için yaptığı şey budur. Yüklenebilir bir çekirdek modülü (LKM) olarak da bilinen çekirdek modülleri, tüm kullanılabilir belleğinizi tüketmeden çekirdeğin tüm donanımınızla çalışmasını sağlamak için gereklidir..

    Bir modül genellikle cihazlar, dosya sistemleri ve sistem çağrıları gibi şeyler için temel çekirdeğe işlevsellik katar. LKM'ler .ko dosya uzantısına sahiptir ve genellikle / lib / module dizininde depolanır. Modüler yapıları nedeniyle, yüklenecek ya da yüklenmeyecek modülleri ayarlayarak, menuconfig komutuyla başlatma sırasında veya / boot / config dosyanızı düzenleyerek çekirdeğinizi kolayca özelleştirebilir veya modprobe ile anında modülleri yükleyebilir veya kaldırabilirsiniz. komuta.

    Üçüncü taraf ve kapalı kaynak modülleri Ubuntu gibi bazı dağıtımlarda bulunur ve modüller için kaynak kodu bulunmadığından varsayılan olarak yüklenemez. Yazılımın geliştiricisi (diğer bir deyişle nVidia, ATI, diğerleri) kaynak kodunu vermezler, aksine kendi modüllerini oluştururlar ve dağıtım için gerekli .ko dosyalarını derlerler. Bu modüller biradaki gibi ücretsiz olmasına rağmen, konuşmadaki gibi özgür değildirler ve bu nedenle bazı dağıtımlara dahil edilmezler, çünkü bakımcılar çekirdeği özgür olmayan yazılım sağlayarak çekirdeği “hafiflettiğini” hisseder..

    Bir çekirdek sihir değildir, ancak düzgün çalışan tüm bilgisayarlar için tamamen önemlidir. Linux çekirdeği OS X ve Windows'tan farklıdır, çünkü çekirdek düzeyindeki sürücüleri içerir ve birçok şeyi “kutudan çıkar” olarak desteklenir. Umarım, yazılım ve donanımınızın birlikte nasıl çalıştığı ve bilgisayarınızı başlatmak için hangi dosyalara ihtiyaç duyacağınız hakkında biraz daha bilgi sahibi olursunuz..

    Kernel.org
    Tarafından görüntü ingridtaylar