Home Index Search Links About Us
[LinuxFocus Image]
[Navegation Bar]
  Duyumlar   Belgelikler   Kuruluşlar  Öğütler  

Çekirdek Gizemleri

Yazar: Emiliano Ariel Lesende

Çeviri: Tülin Üzgün


Sunuş

Linux: Internet
İşletim Sistemi

Ana Özelikler

Çekirdeğin Derlenmesi

Sunuş

Linux çekirdek sırları ile ilgili yazılar serisinin ilkine hoşgeldiniz. Muhtemelen daha önceleri çekirdek kaynakları ile ilgili pek çok şey ögrendiniz. O zaman başlangıçta bir çift 100-kb'lık sıkıstırılmıs dosyanın 2 milyondan fazla kaynak kod satırı içeren ve bir sürü 9 MB'lık sıkıştırılmış depolama yeri alan 300'den fazla dosyaya dönüştüğünü de farketmişsinizdir.

Bu seri yeni başlayanlar için değil, usta programcılar için tasarlanmıştır. Açıkçası, okumakta serbestsiniz, ama yine de, yazar herhangi bir soruyu cevaplandırma ya da elektronik-posta ile göndermek için tereddüt etme konusunda elinden gelenin en iyisini yapacaktır.

Her gün yeni hatalar keşfediliyor ve yeni yamalar basılıyor. Bugünlerde bir bütün içindeki kaynak kodu anlamak neredeyse imkansız gibi bir şey. Homojen bir kodlama stilini korumaya çalışan bir sürü farklı programcı tarafından yazılıyor, ama aslında her biri diğerinden farklı.

Linux: Internet İşletim Sistemi

Linux PC mimarisi ve diğerleri için serbestçe dağıtılan bir işletim sistemi. POSIX 1003.1 standardı ile uyumlu ve Unix System V ile BSD 4.3'ün pek çok özelliğini taşıyor. Bu serinin ele aldıgı Linux çekirdeğinin bir çok esaslı kısmı Finli bir bilgisayar mühendisliği öğrencisi olan Linus Torvalds tarafından yazildi. İlk çekirdek 1991 Kasım'ında serbest dağıtıma sunuldu.

Ana Özelikler

Linux, bugünkü Unix-tabanlı bir işletim sisteminin neredeyse tüm gereksinimlerini karşılamaktadır.

  • Çok Görevlilik

    Linux çok görevliliği gerçek anlamda destekler. Tüm süreçler (prosesler) birbirinden bagımsızdır. Hiçbiri, bir diğer süreci devreye sokmak için bir başkasını serbest bırakmak zorunda değildir.

  • Çok Kullanıcı Erişilebilirliği

    Linux sadece çok kullanıcılı bir işletim sistemi değildir, çok kullanıcı erişimine de olanak tanır. Linux, farklı terminaller aracılıgıyla bir makineye bağlanmış olan kullanıcılar arasında aynı sistem kaynaklarını paylaştırabilir.

  • İsteğe Göre Yüklenen Çalıştırılabilirler

    Bir programın sadece istenen kısımları çalıştırılmak üzere bellege yüklenebilir.

  • Bellek Sayfalama

    Eğer sistem belleği tamamen tükenmişse Linux, bellekten ayrılmış ve katı teker (Hard Disk) üzerinde depolanmış olan 4K-sieLinux entoncesd bellek sayfalarını arayacaktır. Eğer bu sayfalardan birine yeniden gereksinim duyulursa, Linux onu tekerden bellekteki orijinal yerine yeniden depolayacaktır. Eski Unix sistemleri ve şu anki platformlardan bazılarında, buna Microsoft Windows da dahil olmak üzere, anabellek ile katı teker arasında bir değiştokuş (swap) sağlanır. Yani bir bellek kıtlığı durumunda, bir sürece ait olan bellek sayfaları katı teker üzerinde saklanır, ama bu daha az etkin bir yapıdır.

  • Dinamik Teker Tamponu

    MSDOS kullanıcıları disk tamponlama için ayrılmış sabit sistem bellek alanına yer ayıran bir program olan SmartDrive ile çalışmaya alışıktırlar. Bunun yerine Linux'un şok daha dinamik bir disk tamponlama sistemi vardır: tampon işin ayrılan bellek, ya bellek kullanılmadıgı zaman genişletilir ya da sistem veya kullanıcı işlemleri daha çok bellek istediğinde daraltılır.

  • Paylaşımlı Kitaplıklar

    Kitaplıklar veri işlemek amacıyla programlar tarafından kullanılan yordamlar kümesidir. Aynı anda birden fazla işlem tarafından kullanılan bir sürü standart kitaplık vardır. Bu kitaplıklar, eski sistemlerdeki her bir çalıştırılabilir dosyada yer alır ve aynı kitaplığı kullandığı yeni bir sürecin çalıştırıldığı her an fazladan belleğe yüklenerek daha fazla bellek alanı kaplar. Linux gibi modern sistemlerde paylaşımlı kod sadece bir kez yüklenir ve onu kullanan tüm süreçler arasında paylaşılır.

  • Standart POSIX 1003.1 100% uyumlu. Bazi System V ve BSD özellikleri destekleniyor.

    POSIX 1003.1 Unix işletim sistemleri için standart bir arabirim tanımlar. Bu arabirim, C yordamları kümesi olarak açıklanır ve şu anda tüm modern işletim sistemleri tarafından desteklenmektedir. Microsoft Windows NT POSIX 1003.1'e destek veriyor. Linux 1.2 POSIX ile 100% uyumlu. Buna ek olarak bazı System V ve BSD arabirimleri daha ileri düzeyde uyumluluk için destekleniyor ya da uygulanıyor.

  • Birkaç Çalıştırılabilir Dosya Formatı

    Kim Linux altında bir DOS, Windows95, FreeBSD ya da OS/2 uygulamasını çalıştırmak istemez ki? İşte bu nedenle DOS, Windows ve Windows95 emülatörleri geliştiriliyor. Linux ayrıca iBCS2 (intel Binary Compatibility) standardı ile uyumlu diğer intel-tabanlı Unix platformlarından olan ikili (binary) dosyaları çalıştırabilir.

  • Birkaç Dosya Sistemi Formatı

    Linux ciddi boyutlarda dosya sistemi formatını destekler. Bugünlerde en çok kullanılan dosya sistemi formatı İkinci Genişletilmiş Dosya Sistemi (Ext2)'dir. Desteklenen dosya sistemi formatlardan bir diçeri de DOS tabanlı sistemler tarafından kullanılan Dosya Yerleştirim Çizelgesi'dir (FAT), ama FAT tasarım kısıtlarından dolayı güvenlik ve çok kullanıcılı erişim icin henüz hazır değildir.

  • Ağdabirleştirim

    Linux herhangi bir yerel ağa eklenebilir. Ağdabirleştirilmiş Dosya Sistemi (NFS), uzaktan hesaba erişim (telnet, rlogin), dial-up SLIP ve PPP gibi birçok Unix servisi desteklenir. Macintosh, Netware ve Windows'da dosya paylaşımını,yazıcıya gönderme dahil olmak üzere istemci ya da sunumcu olarak diğer ağlara da eklemek mümkündür.

  • 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.



© 1998 Miguel Angel Sepulveda
Bu sanal yörenin bakımı Miguel A Sepulveda tarafından yapılmaktadır..