Çekirdek (bilgisayar bilimi)
İşletim sistemi çekirdeği, kısaca çekirdek veya kernel, işletim sistemindeki her şeyin üzerinde denetimi olan merkezi yazılım bileşenidir.[1] Uygulamalar ve donanım arasında bir köprü görevi görür. Çekirdeğin görevleri sistemin kaynaklarını yönetmeyi de kapsamaktadır. Genellikle çekirdek, işletim sisteminin temel bir elemanı olarak, yazılımın fonksiyonunu yerine getirebilmesi için kontrol etmesi gereken kaynaklar için düşük seviye soyutlama katmanı sağlayabilir. İşletim sistemi görevleri, tasarımları ve uygulanmalarına göre farklı çekirdekler tarafından farklı şekillerde yapılır. Sistem açılırken belleğe yüklenir ve sistem kapatılıncaya kadar ana bellekte kalır.[2]
Çekirdek türleri
[değiştir | kaynağı değiştir]İşletim sistemleri yapısal şeması |
---|
Çekirdek veya kernel; monolitik, mikro ve hibrit çekirdek olarak türlere ayrılır.[3][4]
Monolitik çekirdek
[değiştir | kaynağı değiştir]Monolitik çekirdek, işletim sisteminin tüm işlemlerini tek bir katmanda yönetir. Kullanıcının erişemeyeceği özel bir katman olan kullanıcı modunu barındırmaz. Diğer türlere kıyasla basit bir yazılıma sahiptir, bu sebepten dolayı donanımlarla uyumluluğu yüksektir. Ancak tek katmandan yönetim, bir güvenlik açığının tüm sistemi etkilemesine sebep olabilir. Linux işletim sisteminin çekirdeği buna bir örnektir.[5]
Monolitik çekirdek'te aygıt sürücüleri de uygulamalar gibi işletim sistemi çekirdeğinin bir parçası olarak çekirdek modunda çalışır. Mikro çekirdekte ise aygıt sürücüleri tıpkı uygulama programları gibi Kullanıcı modunda çalışır ve çekirdek ile mesajlaşma yöntemi ile iletişim kurar. Bu yaklaşımın amacı modülerliği artırmaktır.[6]
Mikro çekirdek
[değiştir | kaynağı değiştir]Mikro çekirdeklerde çekirdek, temel yazılım katmanı olan çekirdek modunda çalışır. Bu katmanda çalışan kod, donanıma ve sistemin tamamına tam yetki ile müdahale edebilir. Uygulamalar ise, kullanıcı modu denilen daha kısıtlı bir işlem seviyesinde çalışır. Kullanıcı modunda çalışan uygulamalar, çekirdeğin ya da başka uygulamaların bellek bölgelerine erişemezler, bazı kısıtlanmış işlemci komutlarını çalıştıramazlar ve donanım kaynaklarına doğrudan müdahale edemezler. Aygıt sürücüleri de uygulamalar ile aynı şekilde kullanıcı modunda çalıştığından donanımlara doğrudan erişemez.[6] QNX ve Minix gibi işletim sistemleri mikro çekirdek mimarisini kullanır.
Kullanıcı modu ile çekirdek modu ayrı olduğundan ve uygulamalar doğrudan donanıma müdahale edemediğinden monolitik çekirdeğe kıyasla güvenlidir. Ancak aracı işlemlerden dolayı daha yavaş çalışır.
Hibrit çekirdek
[değiştir | kaynağı değiştir]Hibrit çekirdek, monolitik ve mikro çekirdek mimarilerinin bazı özelliklerini taşır. Bu çekirdek tipine sahip çekirdekler işletim sistemi hizmetlerinin bir kısmını çekirdekte, bir kısmını kullanıcı alanında çalıştırır. Böylece performans ve güvenlik arasında denge kurulmuş olur. Windows ailesi ve MacOS X, hibrit çekirdeğe sahiptir.
Linux
[değiştir | kaynağı değiştir]Linux, UNIX benzeri monolitik bir çekirdek sunar. İlk başlarda 80386 IBM PC uyumlu bilgisayarlar için geliştirilmiştir. Şimdilerde ise X86 ve türevlerinin yanında ARM ve RISC-V gibi pek çok platformda çalışabilmektedir.
Bütün ticari UNIX'ler, SVR4 veya 4.4BSD UNIX temel alınarak geliştirilmiştir ve hepsi POSIX uyumludur. POSIX, çok iyi tanımlanmış bir programlama arayüzü sunar. Yazılımcı, üzerinde çalıştığı işletim sisteminin alt seviye özelliklerine bağlı kalmadan kod geliştirebilmekte ve bu kodları POSIX uyumlu başka işletim sistemlerine kolaylıkla taşıyabilmektedir.
Belleğe yüklenmiş Linux çekirdeğe, modüller vasıtasıyla dinamik olarak kod eklenebilir. Örneğin bir ethernet kartı sürücüsü, çalışan işletim sistemine modül ile tanıtabilir. Aynı şekilde kullanılmayan modüller dinamik olarak bellekten silinebilir. Bu modüller derlenmiş ancak bağlanmamış kod içermektedirler. Bu bağlanmamış obje dosyaları, User Mode programlarla karışmamaları için, .o değil .ko uzantısı ile oluşturulur. Windows NT aygıt sürücüleri derleme ve bağlama aşamalarından geçerek hazır halde dağıtılırken, Linux sistemlerde bağlama işlemi çalışma zamanında dinamik olarak yapılır.
Kaynakça
[değiştir | kaynağı değiştir]- ^ "Kernel". Linfo. Bellevue Linux Users Group. 8 Aralık 2006 tarihinde kaynağından arşivlendi. Erişim tarihi: 15 Eylül 2016.
- ^ Randal E. Bryant; David R. O’Hallaron (2016). Computer Systems: A Programmer's Perspective (PDF) (Third bas.). Pearson. s. 17. ISBN 978-0134092669. 31 Mart 2020 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 30 Mart 2020.
- ^ "Çekirdek Nedir? Ne yapar?". ubuntu-tr.github.io. 21 Ocak 2025 tarihinde kaynağından arşivlendi. Erişim tarihi: 21 Ocak 2025.
- ^ "İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar)" (PDF). 21 Ocak 2025 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 21 Ocak 2025.
- ^ "Yeni Başlayanlar İçin Linux Çekirdeği Eğitimi". tr.linux-console.net. Erişim tarihi: 21 Ocak 2025.
- ^ a b Roch 2004
Dış bağlantılar
[değiştir | kaynağı değiştir]- MIT Exokernel İşletim Sistemi
- Detaylı kernel karşılaştırması14 Eylül 2008 tarihinde Wayback Machine sitesinde arşivlendi.