Kernel (Çekirdek), işletim sisteminin temel bir parçası olan bir yazılımdır. Öncelikle çeşitli programlar için bilgisayar donanımına güvenli erişim sağlamaktan sorumludur.
İşletim Sistemlerindeki Kernel Nedir?
Sistem çağrı hizmetleri aracılığıyla kaynakları yönetmekten sorumludur. Ayrıca hangi programın bir donanım cihazı kullanabileceğine ve neyin çoğullama olarak bilinen süreye karar vermekten de sorumludur.
Donanıma doğrudan erişmek gerçekten karmaşık olabilir, bu nedenle çekirdekler genellikle bir dizi donanım soyutlaması uygular.
Bu karmaşıklığı gizler ve altta yatan donanıma temiz ve düzgün bir arabirim sağlayarak geliştiricinin kullanımını kolaylaştırır.
Ne İşe Yarar?
- Çalışan tüm programlar ve işlemler için bellek yönetimi sağlar.
- Çalışan programları ve işlemleri kullanan işlemci zaman yönetimi sağlar.
- Kaynak ve donanım isteyen programlar arasındaki iletişimi sağlar.
- Bir makinenin farklı bilgisayar programlarının (görevlerinin) yönetimini sağlar.
- Donanım yönetimini gerçekleştirir.
Kernal Türleri
Bilgisayar kullanmak için bir çekirdeğe ihtiyacınız yoktur. Programlar, herhangi bir donanım soyutlaması veya işletim sisteminden herhangi bir yardım almadan geliştirmeleri istediği sürece doğrudan boş bir bilgisayara yüklenebilir ve çalıştırılabilir.
Bu, her seferinde bilgisayarı yeniden başlatmak ve yeniden yapılandırmak zorunda olduğunuz farklı programları kullanmak için ilk bilgisayarların çoğunu kullanmanın normal yoluydu.
Zamanla, yükleyici ve hata ayıklayıcı gibi küçük yan programlar, farklı çalışmalar arasında bile bellekte bırakıldı veya salt okunur bellekten yüklendi. Onlar geliştikçe, en eski işletim sistemi çekirdeklerinin ne olacağının temeli oldular.
Dört ana kernel türü vardır:
- Monolitik Çekirdekler
Altta yatan donanımın gerçekten güçlü ve çeşitli soyutlamalarını sağlar.
- Micronuclei Çekirdekler
Küçük bir dizi basit donanım soyutlaması sağlar ve daha fazla işlevsellik sunmak için sunucular adı verilen uygulamaları kullanır.
- Hibrit Çekirdekler
Daha hızlı çalışmalarını sağlamak için Kernel alanına ek kod eklemeleri dışında, saf mikro çekirdeklere çok benzerler.
- Exonuclei Çekirdekler
Herhangi bir soyutlamayı kolaylaştırmaz, ancak donanıma doğrudan veya neredeyse doğrudan erişim sayesinde daha fazla işlevsellik sağlayan kitaplıkların kullanılmasına izin verir.
Linux Çekirdeği
Önyükleme klasöründe ayrıca initrd.img sürümü, System.map sürümü ve yapılandırma sürümü adı verilen çok önemli dosyalar da olacaktır. İnitrd dosyası, dosyayı geçerli çekirdekten ayıklayan ve yürüten küçük bir RAM diski olarak kullanılır.
System.map dosyası Kernel tam olarak yüklenmeden önce bellek yönetimi için kullanılır ve yapılandırma dosyası çekirdeğe başlangıçta hangi seçeneklerin ve yükleme modüllerinin çalıştırılacağını bildirir.
Linux Çekirdek Mimarisi
Linux çekirdeği monolitik olduğundan, diğer Kernel türlerinden daha karmaşıktır.
Bu, Linux‘un ilk günlerinde biraz tartışılan bir tasarım özelliğiydi ve hala monolitik çekirdeklerin sahip olduğu tasarım kusurlarından bazılarına sahiptir.
Linux çekirdeği geliştiricilerinin bu kusurları aşmak için yaptıkları bir şey, çalışma zamanında yüklenip indirilebilen Kernel modüllerini yapmaktır, yani çekirdeğinize anında özellikler ekleyebilir veya kaldırabilirsiniz.
Bu, düşük seviyeli canlandırma gibi sunucu işlemlerini çalıştıran modüller ekleyerek çekirdeğe donanım işlevselliği eklemenin ötesine geçebilir, ancak bazı durumlarda bilgisayarın gereksiz yere yeniden başlatılmasına neden olarak çekirdeğin tamamen değiştirilmesine izin verebilir.
Çekirdek Modülleri
LKM (loadable kernel modules/yüklenebilir çekirdek modülleri)’ler, kullanılabilir tüm belleği tüketmeden tüm donanımlarla çalışmasını sürdürmek için gereklidir.
Bir modül genellikle çekirdeğin aygıtlar, dosya sistemleri ve sistem çağrıları gibi işlevlerini artırır. LKM’lerin uzantısı var. Normalde /lib/modules dizininde saklanır.
Modüler doğası gereği, yükleme modüllerini ayarlayarak veya ayarlayarak, menuconfig komutuyla önyükleme sırasında veya /boot/config dosyasını düzenleyerek çekirdeğinizi kolayca özelleştirebilir veya modprobe ile modülleri anında yükleyebilir ve indirebilirsiniz.
Üçüncü taraf ve kapalı kaynak modüller Ubuntu gibi bazı dağıtımlarda bulunur ve modüllerin kaynak kodu kullanılamadığından varsayılan olarak yüklenemez.
Yazılım geliştirme şirketleri kaynak kodu sağlamaz, aksine kendi modüllerini oluşturur ve dosyalarını derler.
Bu modüller biradaki gibi serbest olmasına rağmen, konuşmadaki gibi özgür değildirler ve bu nedenle bazı dağıtımlara dahil edilmezler, çünkü koruyucular özgür olmayan yazılım sağlayarak çekirdeği kirlettiklerini düşünürler.
Windows Kernel & Çekirdeği
Windows, zaten ayrıcalıklı bir konuma sahip olan Unix gibi diğerleriyle pazarda rekabet edebilen bir işletim sistemidir, sonuçlar açısından, o yeri kazanmasına izin veren bir dizi özelliğe sahiptir.
Kernel Modu
HAL (Hardware Abstraction Layer/Donanım Soyutlama Katmanı) donanım ve işletim sisteminin geri kalanı arasındaki bir arabirimdir. Bir DLL olarak uygulanır ve sistemin geri kalanını kesme sürücüleri, giriş/çıkış arayüzleri gibi donanım özelliklerinden korumaktan sorumludur.
Bu soyutlama sistemi daha taşınabilir hale getirir, çünkü sistemin geri kalanı hangi platformda çalıştığı konusunda endişelenmek zorunda değildir.
Sistemin çalıştığı her platformun belirli bir HAL’ye ihtiyacı vardır. Tasarım, Windows yeni işlemci mimarisine taşındığında, HAL yeni işlemci için yeniden yazılır, ancak sistemin geri kalanının yeniden derlenmesi gerekir.
Micro Kernel
Sistem üzerinde yapılan tüm eylemlerden sorumludur ve sistemin hemen hemen tüm fonksiyonları sistemden geçer.
Mikro Kernel, Windows’un kalbinde yer alır, HAL ile çok yakın çalışır, iş parçacıklarının yürütülmesini planlar ve işlemlerin kesintilerini ve istisnalarını manipüle eder.
Bunun rolü, işlemcileri olabildiğince meşgul tutmaktır. Genel olarak, tüm işletim sisteminin iş parçacığı yürütme, çok işlemcili senkronizasyon ve donanım kesintilerinin ele alınması işlevlerinden sorumludur.
Windows çekirdeği, mikro çekirdeğin neredeyse her zaman doğrudan ele alınamayacak kadar meşgul olması nedeniyle tüm sistem için hayati önem taşıyan önemli görevlerle ilgilenir.
Nesne Yöneticisi, Windows Executor’u oluşturan tüm sistemler tarafından kullanılan nesneleri oluşturmak, değiştirmek ve silmek için kullanılır.
Ayrıca tüm İşletim Sistemine nesnelerin durumu hakkında bilgi sağlar.
İşlem Yöneticisi
İşlem Yöneticisi, tüm işlemlerin ve iş parçacıklarının durumlarını oluşturmak, kaldırmak ve değiştirmekle sorumludur. Ayrıca, sistemin geri kalanına işlemlerin ve iş parçacıklarının durumu hakkında bilgi sağlar.
Sanal Bellek Yöneticisi
VMM (Virtual Memory Manager/Sanal Bellek Yöneticisi) sistemin sanal bellek yönetimini sağlar. Sanal bellek, sayfaları kullanılmadıklarında diske taşıyan ve gerektiğinde onları kurtaran sistemin fiziksel belleği yerine diskin kaynaklarını kullanmanızı sağlayan bir şemadır.
Bu, sistemdeki fiziksel bellek miktarından endişe etmeden her bir işleme 32 bit adres alanı ayıran Windows’un ayrılmaz bir parçasıdır.
Yerel Prosedürler Hizmetleri
LPC (Local Procedure Call Facility/Yerel Prosedürler Hizmetleri), Windows istemci/sunucu tasarımına entegre edilmiştir. Bu, sistemde yerel olarak çalışan tüm istemci ve sunucu işlemleri arasındaki arabirimdir.
Güvenlik İzleyicisi
SRM (Security Reference Monitor/Güvenlik Referans İzleyicisi), Windows sistemindeki tüm güvenliğin yatağıdır ve yerel bilgisayardaki tüm güvenlik ilkelerinin uygulanmasından sorumludur.
Giriş-Çıkış Yöneticisi
Input-Output Manager (Giriş-Çıkış Yöneticisi), her sürücünün nasıl müdahale etmesine gerek kalmadan, tüm sürücülerin homojen bir şekilde işlenmesine izin veren iyi tanımlanmış bir arabirim uyguladığı farklı aygıt sürücüleri arasındaki iletişimin yönetilmesinden sorumludur.
Win32 Alt Sistemi
Bu alt sistem, istemci olarak çalışan ve API çağrılarını uygun Win32 API’lerine çeviren Windows’ta desteklenen tüm diğer ortam alt sistemleri için bir sunucu görevi görür.
Win32 alt sistemi tüm girdi ve çıktılardan sorumludur. Ekran, klavye ve fare kontrolüne sahiptir. OS/2 veya POSIX gibi diğer alt sistemlerin bu aygıtlardan faydalanması gerektiğinde, Win32 alt sisteminden hizmet ister.
Önceki sürümlerde yapılan uygulamalarla uyumluluğu sağlamak için belirlenmiş hedeflerden bazıları:
- DOS üzerinde yapılan programların değişiklik yapmadan çalışmasına izin verir.
- Çoğu 16-bit Windows uygulamasını değiştirmeden çalıştırma yeteneği sağlar.
- Sistemi ve diğer 32 bit uygulamaları 16 bit ve DOS uygulamalarından gelen parazitlerden korur.
- 16 bitlik ve DOS Windows uygulamalarını çalıştırmak için RISC platformlarına izin verir.
POSIX
Windows NT geliştirme aşamasındayken Microsoft Subsystem farklı açık sistem standartlarına çok dikkat etti.
Açık sistemleri desteklemenin değerini, piyasadaki yeni gelişmiş işletim sistemlerini kabul etmenin bir yöntemi olarak kabul ettiler.
Windows tarafından desteklenen en yaygın olarak belirtilen standartlardan biri, Taşınabilir İşletim Sisteminin arabirimini temsil eden ve IEEE (Elektrik ve Elektronik Mühendisleri Enstitüsü) tarafından bir yöntem olarak geliştirilen POSIX (Unix tabanlı Taşınabilir İşletim Sistemi Arabirimi) ‘dir. UNIX platformlarında yapılan uygulamalara taşınabilirlik sağlar.
Ancak POSIX, UNIX dışı birçok sisteme entegre edilmiştir. OS/2 Alt Sistemi, tıpkı POSIX alt sistemi gibi UNIX uygulamaları için bir ortam sağlar, bu alt sistem OS/2 uygulamalarını destekler.
Grafik arayüz ve sistem çağrıları sağlar; çağrıları Windows Executor yardımı ile sunulur.
Bir Kernel herhangi bir bilgisayarın düzgün çalışması için tamamen gereklidir. Linux çekirdeği, çekirdek seviyesi sürücüleri içerdiği ve çok daha fazlasını yaptığı için OS X ve Windows’dan farklıdır.