Kuşkusuz kullandığımız bilgisayarlarda bulunan Windows serisi ve açık kaynaklı Unix türevi işletim sistemlerinin sahip olduğu güç tartışılamaz. İkisi ve diğerleri yabancı ellerden çıkmış ve buralara gelmiş işletim sistemleri/çekirdekleri. Peki ya biz ? Bizim ülkemizde var mı böyle işletim sistemleri ? Önce işletim sistemi nedir ne değildir ona bir bakalım.
İşletim sistemleri bilgisayarınızda bulunan donanım kaynaklarını yöneten, kullanıcı ile donanım arasındaki bağlantıyı sağlayan yazılımların bir bütünüdür. İşletim sistemleri sayesinde "low-level" olarak adlandırılan işlemler kullanıcıdan soyutlanır ve işletim sistemi tarafından gerçekleştirilir. Çalıştırdığınız programların bellek yönetiminden tutun, farenizin hareket etmesine kadar her şey onun tarafından kapalı kapılar ardında, gözlerden uzak olarak gerçekleştirilir.
Peki böyle bir yazılım geliştirmek neden önemli ?
En başta gelecek nesillere bilgi birikimi bırakmak, ülkede yetişecek sistem programcılarının sayısını arttırmak için. Bugün baktığımızda işletim sistemi geliştirmek adına Türkçe olarak yazılmış makale neredeyse yok. Bir şeyler yapmaya çalışan insanlar yabancı kaynakları kullanarak yapmaya çalışıyor. Bu durumdan kurtulabilmek için bu alanda araştırma yapılmalı, ortaya elle tutulur somut kalıntılar bırakılmalı, bunun dışında sadece eğlence için bile işletim sistemi geliştirilebilir. Hobi işletim sistemi adı altında geliştirilen bu işletim sistemleri programlama bilgisini arttırmak ve donanım ile konuşmanın verdiği zevki tatmak için çok uygun. Son olarak belki de var olan işletim sistemlerini yerini alacak, daha iyi bir işletim sistemi geliştirmek. Uzun vadede bu zor bir ihtimal olsa da imkansız değil.
Peki işletim sisteminin yapısı nasıl ?
Genel olarak işletim sistemlerinin açılabilmesi için Önyükleyici (bootloader) adı verilen işletim sistemi parçaları bulunmaktadır. Önyükleyiciler işletim sisteminin açılması için gereken ilk adımları gerçekleştirir. İşletim sistemi açıldıktan sonra devreye çekirdek girecek ve donanımla olan haberleşme tam anlamıyla başlayacaktır. Çekirdek kendi arasında bölümlere ayrılıyor, hafıza yönetimi, işlem yönetimi, dosya sistemi yönetimi gibi. Bunların her biri neredeyse ayrı ayrı uzmanlık isteyen alanlar. Hepsinin bir tek kişi tarafından bir yere kadar geliştirilmesi mümkün, fakat bir süre sonra artık içinden çıkılmaz bir hal alıyor ve takımı büyütmek durumunda kalıyorsunuz. Kağıt üzerinde çok kolay gibi gözükse de burada henüz yürüyemeyen bir bebeğin yetişkin bir insan olması gibi zor bir süreç var. İşletim sisteminiz siz öğretmediğiniz sürece alt satıra bile geçemiyor, her şeyi sıfırdan siz yazmak zorundasınız.
Başlamak için temel şeylerden bahsedip, yazıyı bitirelim. Öncelikle bilmeniz gereken şey gerçekten iyi bir sabır ve merak duygusuna sahip olmanız gerektiği. Geliştirme aşamasında karşınıza sayısız hata çıkacak, bunların hepsini tek başınıza düzeltmeniz gerekecek, destek beklememek zorundasınız. En azından ülkemizde şuan için durum böyle. Bunun dışında başlıca olmazsa olmaz Assembly bilmek zorundasınız. Bir süre sonra başka bir programlama diline ki bu genellikle C/C++ olur geçerek biraz daha rahatlayabilirsiniz fakat önyükleyici ve bazı low-level yazılımlar için assembly kullanmanız şart. Örneğin sistemin açılmasını için gereken ön yükleyiciyi assembly ile yazıp, gerçek moddan korumalı moda geçişi yapmalısınız.
Üzerinde çalıştığınız donanımların yapısını bilmeniz gerekiyor, sonuçta burada siz ram ile, cpu ile konuşacaksınız dillerini bilmeniz gerek. Nasıl çalıştıklarını derinlemesine olmasada bilmelisiniz. Bunun dışında geliştirdiğiniz kodları derleyebilmek, bağlayabilmek için gerekli yazılımların kullanımını bilmeniz gerekiyor. Örneğin C/C++ derleyicisi GCC, assembler nasm, bağlama için GNU ld... Yazdığınız işletim sistemini başlarda test edebilmek için bazı emülatörlerden yararlanmanız da gerekecek, örneğin Qemu,Bochs veya VirtualBox. Son olarak bolca zaman gerekli. İşletim sistemi geliştirmek bügün karar verip yarın ortaya koymak şeklinde olmuyor. Uzun zaman gerektiren bir iş, üstelik tek başınıza yapacaksınız bunu, destek bulabilirseniz ne âlâ. Bu konularda bilgi edinmek için bakınabileceğiniz en iyi yerlerden biri muhtemelen osdev.org. Şuan için internet üzerinde en geniş bilgi sanırım burada var, başlamak için ideal bir yer.
Ebubekir Karul

gercektende guzel paylasım olmus tesekkur ederım...
YanıtlaSil