Bilgisayarı açtığınızda neler olur?

Çalışan bir program olmadığında, bir bilgisayar sadece elektroniğin hareketsiz, iri bir parçasıdır. Bir bilgisayarın açıldığında yapmak zorunda olduğu ilk şey: "işletim sistemi" denen özel bir programı başlatmaktır. İşletim sisteminin görevi; diğer bilgisayar programlarının çalışmasına, bilgisayar donanımının kontrolününün karmaşık detaylarını ele alarak yardımcı olmaktır.

İşletim sistemini getiren süreç, önyükleme (boot etme) olarak adlandırılır (aslında bu sıfırdan önyüklemedir ve "sıfırdan önyükleme" ile bilgisayarınızı ayağa kaldıran süreç anlamındadır). Bilgisayarınız nasıl önyükleme yapacağını bilir, çünkü önyükleme için gerekli ifadeler bir tane çipe yerleştirilmiştir, BIOS (Basic Input/Output System - Temel Giriş/Çıkış Sitemi) yongası.

BIOS çipi bilgisayarınıza, önyükleme yükleyicisi (Linux'ta önyükleme yükleyicisi Grub ya da LILO olarak çağrılır) denilen özel bir program için, genellikle en düşük numaralı sabit disk (önyükleme diski) olan belirli bir yer bakmasını söyler. Önyükleme yükleyicisi belleğe çekilir ve başlatılır. Önyükleme yükleyicisinin işi; gerçek işletim sistemini başlatmaktır.

Yükleyici bu işi bir çekirdeği arayarak, belleğe yükleyerek ve başlatarak yapar. Linux'u başlattığınız ve LILO ekranını izleyen bir nokta demeti gördüğünüz zaman, çekirdek yükleniyor demektir. (Her nokta ,çekirdek kodunun farklı bir disk bloğunun yüklendiğini gösterir.)

(Neden BIOS'un çekirdeği direk olarak yüklemediği ve önyükleme yükleyicisi ile iki adımlık bir sürec olduğunu merak edebilirsiniz. BIOS pek de akıllı değildir. Aslında çok aptaldır ve Linux onu önyükleme zamanından sonra bir daha kullanmaz. Başlangıçta BIOS, 8 bitlik ilkel PC'lerin ufak diskleri için yazılmıştı ve çekirdeği direk olarak yüklemek için diske yeteri kadar erişemiyordu. Önyükleme yükleyici aşaması, diskinizin farklı bölümlerindeki diğer işletim sistemlerini de başlatma imkanı verir. Kötü olan olay ise; bu konuda Unix pek iyi olmamasıdır.)

Bir kere çekirdek başladığı zaman etrafına bakmak, diğer donanımları bulmak ve programları çalıştırmaya hazır hale getirir. Bu işi ise sıradan bellek yerlerini uyarmaktan ziyade, giriş/çıkış portları ile yapar - uygun özel veriyolu adresleri, cihaz denetleyicilerinin komutları için dinlediği özel veriyolu adresleridir. Çekirdek rastgele uyarı yapmaz; denetleyicilerin, hazır olanları muhtemelen nerede bulacağı ve ağer varlarsa bunların nasıl yanıt vereceği konusunda pek çok kendinden bilgiye sahiptir. Bu işleme ise özdevinimli algılama (autoprobing) denir.

Önyükleme zamanıda gördüğünüz mesajların çoğu, çekirdeğinizin giriş/çıkış portları vasıtasıyla donanımı özdevinimli algılaması (autoprobing), uygun olanları bulması ve kendisini makinenize adapte etmesidir. Linux çekirdeği bu konuda, pek çok diğer Unixlerden ve DOS veya Windows'tan çok daha iyidir. Aslında, birçok eski linuxçunun Linux'un önyükleme zamanındaki akıllılığı (kurulumu görece basitleştirmesi) hakkındaki düşündüğü şey, büyük boyutta özgün Unix denemesi yapan kullanıcıların çekilmesinin önündeki temel engeldir.

Ancak çekirdeğin tamamen yüklenmesi ve çalışması önyükleme işleminin sonu değildir; bu sadece ilk bölümdür (bazen 1. seviye çalışması (run level 1) denir). Bu ilk bölümden sonra çekirdek, 'init' denilen, toparlama süreçleri üreten özel bir sürecin kontrolünü ele alır.

İnit sürecinin genellikle ilk işi; disklerinizi problemsiz olduğundan emin olmak amacıyla denetlemektir. Disk dosya sistemleri narin şeylerdir; eğer bir donanım hatası veya elektrik kesintisi nedeniyle hasar görürse, Unix'inizin gidişatından önce kurtarma adımlarını uygulamanız için yeterli nedenleriniz var demektir. Bu konuya daha sonra, dosya sistemlerinde işlerin nasıl yanlış gittiği konusunda konuştuğumuz zaman gireceğiz.

İnit'in sonraki işi ise; birkaç artalan sürecini çalıştırmaktır. Artalan süreci, arkaplanda gizlenip birşeylerin olması bekleyen yazıcı kuyruklayıcısı, posta dinleyicisi ya da WWW sunucusu gibi bir programdır. Bu özel programlar, sıklıkla birkaç isteğin çakışmasını düzenlemekle yükümlüdürler. Bunlar artalan süreçleridir çünkü, sürekli çalışan ve tüm istekleri bilen bir programı yazmak yerine genellikle, birbirini kesmediğinden emin olunabilecek birçok (herbiri bir isteği işleyen ve hepsi aynı anda çalışan) program yazmak daha basittir. Sisteminizin başlattığı artalan süreçleri kümesi değişiklik gösterebilir, fakat neredeyse her zaman bir yazıcı kuyruklayıcı (yazıcınız için bir bekçi artalan süreci) bulunur.

Bir sonraki adım ise kullanıcılara hazırlanmaktır. İnit konsolunuzu izlemek için, 'getty' denilen bir programın kopyasını başlatır (ve dial-in seri portlarını izlemek için belki daha fazla kopya). Bu, konsolda login promptları çıkaran programdır. Bir kere her terminal için tüm artalan süreçleri ve getty süreçleri başladığında, 2. seviyede çalışıyoruz demektir. Bu seviyede, giriş yapabilir ve programları çalıştırabilirsiniz.

Ancak henüz bitmedi. Bir sonraki adım; ağ işlemlerini ve diğer servisleri destekleyen çeşitli artalan süreçlerini çalıştırmaktır. Bir kere bu işlem yapıdığında, 3. seviyede çalışıyoruz demektir ve sistem tam olarak kullanıma hazır demektir.