System V IPC
Linux bu teknolojiyi süreçler arası ileti sıralaması,
semaforlar ve paylaşımlı bellek sağlamak amacıyla kullanır.
Çekirdeğin Derlenmesi
Çekirdeğin kendisini çalışmadan önce çekirdeğin kaynak koduna
bakalım.
Kaynak Ağaç Yapısı:
Linux çekirdek kaynakları genel olarak /usr/src/linux
dizini altında yer alır, bu nedenle bu yerleşimi taban alarak
diğer dizinlere göreceli olarak değineceğiz. Intel olmayan
mimarilere aktarımın bir sonucu olarak 1.0 sürümünden sonra
çekirdek ağacı değiştirilmiştir. Mimariye bağımlı kod arch/
dizini altındadır. Intel 386, 486, Pentium ve Pentium Pro
işlemcileri için olan kod arch/i386 altındadır. arch/mips
dizini MIPS-tabanlı sistemler, arch/sparc Sun Sparc-tabanlı
platformlar , arch/ppc PowerPC/Powermacintosh
sistemleri içindir. Linux'la kullanımı en yaygın olan Intel
mimarisi olduğundan onun üzerinde yoğunlaşacağız.
Linux çekirdeği sadece standart bir C programıdır aslında.
Yalnızca iki önemli farklılık vardır. C dilinde yazılan programların
başlangıç noktası main(int argc,char **argv) yordamıdır.
Linux çekirdeği start_kernel(void) kullanır. Sistem başlarken ve
çekirdek yüklenecekken daha program çevresi mevcut değildir. Yani
ilk C yordamı çağrılmadan önce bir kaç şey daha yapılmalıdır. Bu
işi gerçekleştiren donanım kodu arch/i386/asm/ dizini
altında yer alır.
Assembler dili yordamı çekirdeği tam olarak 0x100000 (1 Mbyte)
bellek adresine yükler, ardından da başlatma süreci esnasında
dışlamalı olarak kullanılan kesme hizmet yordamlarını (interrupt
servicing routines), genel dosya tanımlayıcı çizelgeleri (global
file descriptor tables) ve kesme tanımlayıcı çizelgeleri
(interrupt descriptor tables) yükler. Bu noktada islemci korunumlu
moda girer. Çekirdeği başlatmak icin gereksiniminiz olan her şey
init& dizini altındadır. Burası çekirdeği doğru düzgün
başlatmakla görevlendirilmiş, geçirilen tüm açılış (boot)
parametrelerini dikkate alan start_kernel()yordamıdır. İlk
süreç sistem çağrıları kullanılmadan oluşturulur (daha henüz
sistemin kendisi yüklenmemiştir). Bu diğer süreçlerden biri
kullanmadıgı zaman işlemci zamanını kullanan ünlü başıboş
süreçtir.
kernel/ ve arch/i386/kernel/ dizinleri,
erişimyolu (path) isimleriyle birlikte olmak üzere, çekirdegin
ana kısımlarını kapsar. İşte burada ana sistem çağrıları vardır.
Zaman yürütücüsü, zaman programlayıcı (scheduler), doğrudan
bellek ulaşim (DMA) yöneticisi, kesme yürütücüsü ve sinyal
denetleyicisi dahil olmak üzere diğer işler gerçekleştirilir.
Sistem belleğini yürüten kod mm/ ve arch/i386/mm/
içerisindedir. Bu alan bellek atanması ve işlemlerin serbest
bırakılması için ayrılmıştır. Bellek sayfalama da burada yapılır.
Sanal Dosya Sistemi (vfs) fs/ dizini altındadır.
Desteklenen farklı dosya sistemi formatları sırayla farklı
altdizinlere yerleştirilir. En önemli dosya sistemleri Ext2
ve Proc'tur. Daha sonra bunlara ayrıntılı olarak değinecegiz.
Tüm işletim sistemlerinde donanım bileşenleri için bir
sürücüler kümesine gereksinim duyulur. Linux çekirdeğinde bunlar
drivers/ altında yer alırlar.
ipc/ altında System V IPC'nin Linux uyarlamasını
bulacaksınız.
Birkaç ağ protokolu, soketler ve internet yöresi için uygulama
kaynak kodu net/ altında bulunmaktadır.
Bazı standart C yordamları, çekirdeğin kendisine de C
programlama alışkanlıklarını edinme şansını verecek şekilde
lib/ altında yürütülür.
Çekirdeğin derlenmesi sırasında oluşan yüklenebilir modüller
modules/ altında saklanır, ama burası ilk çekirdek
derleme işlemi yapılıncaya kadar boştur.
Belki de programcılar tarafından en çok kullanılan dizin
include/ dizinidir. Burada çekirdek tarafından özel
olarak kullanılan tüm C başlık dosyalarını bulacaksınız. Intel
platformlarına özgü çekirdek başlık dosyaları
include/asm-386/ altındadır.
Derleme: Yeni bir çekirdek temel olarak üc adımda
oluşturulur:
- Herşeyden önce, "make config", "make menuconfig" ya da "make xconfig"
(aynı konfigürasyon aşaması için farklı arabirimler) ile çekirdek
düzenlenebilir seçeneklerini konfigure etme.
- Ardından tüm kaynak kod bagımlılıkları "make depend" ile yeniden düzenlenir.
- Ve sonra da "make" ile gerçek çekirdek derleme işlemi gerçekleştirilir.
Gelecek yazılarda bu yaziımların geri plan ayrıntıları ve yeni
konfigürasyon seçeneklerini tanıtırken onları nasıl değiştireceğimiz
üzerinde duracağız.
Umarim bu yazıyı okurken zevk almışsınızdır. Her türlü yorumlarınızı,
önerilerinizi ve eleştirilerinizi elesende@nextwork.net adresine
gönderebilirsiniz.
Daha Çok Bilgi İçin::
- Kernel-HOWTO'ya bakabilirsiniz.