Nedir bu Linux Çekirdeği (Kernel)?

Kadir Sert
3 min readJul 14, 2021

--

Kernel işletim sisteminin çekirdeğidir. İşletim sistemleri ise donanımı yöneten ve kullanıcıların bilgisayar üzerinde programlarını çalıştırabilmelerine izin veren uygulamaların tümüdür. Çekirdek, uygulamaları ve donanımı kontrol eder. Uygulamalar donanım ile doğrudan iletişim kurmazlar. Bunun yerine çekirdeğe giderler. Özetleyecek olursak, uygulamalar çekirdekte çalışır. Çekirdek ise donanımı yönetir. Bir bilgisayar çekirdek olmadan hiçbir işe yaramayan bir alettir.

Kaynak: https://commons.wikimedia.org/wiki/File:Linux_kernel_and_Computer_layers.png

Bir kullanıcının kendi çekirdeğini oluşturması için birçok sebep vardır. Birçok kullanıcı sadece sistem üzerinde çalışmasını istediği kodları içeren bir çekirdek isteyebilir. Örneğin bir çekirdek FireWire cihazları için sürücüler içerebilir, fakat bilgisayar üzerinde fiziksel olarak böyle bir port bulunmayabilir. Dolayısıyla sistem açılmaya başladığında bilgisayar üzerinde bulunmayan cihazların sürücüleri RAM içerisinde boşuna yer işgal edecektir. Başka bir sebep ise öncekinin tam tersine kullanıcı bilgisayarının özel bir donanım içermesine karşılık çekirdeğin bu donanım için sürücü sağlamıyor olmasıdır.

Bir çekirdeği indirmeden önce bazı önemli kavramları tartışmamız gerekir. Her şeyden önce Linux monolitik bir çekirdeğe sahiptir. Bu ise tüm işletim sisteminin RAM üzerinde tutuluyor olduğu anlamına gelmektedir. RAM üzerinde çekirdek için rezerve edilmiş bir alan tahsis edilir. Bu alana sadece çekirdek erişebilir ve sistem kapanana kadar da sahip olur. Çekirdek alanına karşılık bir de kullanıcı alanı bulunmaktadır. Bu alan kullanıcı programlarının çalıştığı yerdir. Web tarayıcıları, medya oynatıcıları, oyunlar, duvar kağıtları vb. RAM’deki kullanıcı alanında tutulur. Bir uygulama kapatıldığında boşalan yeri başka bir uygulama kullanabilir. Çekirdek alanı ise bir kere tahsis edildiğinde başka hiçbir şey bu alanı kullanamayacaktır.

Linux çekirdeği aynı zamanda preemptive multitasking yapıdadır. Yani her bir uygulamanın işlemciyi kullanabilme hakkını garanti altına almak için çalışan bazı görevleri belirli bir süre durdurabilir. Örneğin çalışan bir uygulama veri bekleme durumundaysa kernel veri gelene kadar o uygulamayı askıya alır ve diğer bir uygulamanın işlemci kaynaklarından faydalanmasına olanak tanır. Diğer türlü tüm görevler çalışan görevin tamamlanmasını beklemek zorunda kalacağından sistem kaynakları israf edilecektir. Uygulamalar kendilerini veya başka uygulamaları askıya alma ya da çalışmaya devam ettirme hakkına sahip değildir. Bu işlemler sadece çekirdek tarafından yapılabilir.

Çekirdek, cihazların “/dev” dizini altındaki dosyalar şeklinde görünmesini sağlar. Örneğin USB portları “/dev/bus/usb” dizini içerisinde yer alır. Harddisk bölümleri ise “/dev/disk/by-id” dizini içerisinde görülebilir. Linux’ta her şey bir dosyadır. Eğer bir kullanıcı hafıza kartındaki verilere erişmek istiyorsa ancak bu cihaz dosyasını kullanarak erişebilir.

Linux çekirdeği taşınabilirdir. Bu özellik Linux’u popüler yapan en önemli özelliklerinden biridir.Taşınabilirlik, Linux çekirdeğinin çok çeşitli işlemci mimarilerinde çalışabilme yeteneğidir. Çekirdeğin desteklediği bazı işlemci tipleri şunlardır: Alpha, AMD, ARM, C6X, Intel, x86, Microblaze, MIPS, PowerPC, SPARC vb.

Kullanıcılar boot dizini “/boot” içerisinde “vmlinux” ya da “vmlinuz” isminde bir dosya göreceklerdir. Bu dosya derlenmiş Linux çekirdeğidir. “z” harfi ile biten sıkıştırılmış anlamına gelir. “vm” ise virtual memory (sanal hafıza) anlamına gelmektedir. SPARC işlemcilere sahip sistemlerde kullanıcılar bunların yerine zImage adında bir dosya göreceklerdir. Hatta daha küçük bir kısmı bzImage adında bir dosya görebilirler. Bunlar da sıkıştırılmış Linux çekirdekleridir. Bu dosyalarda yapılabilecek bilinçsizce bir değişiklik sistemi açılamaz hale getirebilir.

Kaynak kod ise uygulamanın kodlanmış halidir. kaynak kodları ile programcılar çekirdekte değişiklik yapabilirler ve çekirdeğin nasıl çalıştığını görebilirler.

--

--