İşletim sistemi yapmak

Hocam temple OS'i duydunuz mu? Adam kendi programlama dili olan "holy C" diye bir dil geliştirmiş falan göz atmanızı öneririm.
 
Son düzenleyen: Moderatör:
Sanal bir işletim sistemi yapmayı hiç düşündünüz mü? Sizce nasıl yapılabilir? Sanal işletim sistemi Visual Studio ile giriş düzeyde olsa da yapılabilir diyelim. Gerçek bir işletim sistemi yapıp bunu ISO olarak USB'ye yazdırıp, UEFI bellek elde ettikten sonra sistemi Boot ederek çalıştırmak sizce mümkün mü? Neler gerekir? Tartışalım.
İşletim sistemleri bir bilgisayarın donanım kaynaklarını yöneten yazılımlar bütünüdür. Tek bir yazılım değil, birden çok yazılımı içlerinde barındırırlar. Bir işletim sisteminin geliştirilmesinde yüzlerce, hatta binlerce programcının katkısı olabilir.
 
O zaman iş biraz zor isterseniz Linux dağıtımı yapabilirsiniz o çok daha kolay.
Kişiden kişiye değişir açıkçası bu da. Sıfırdan, Linux'un GitHub reposundaki çekirdeğini derleyerek yapılacaksa çok uzun sürecektir. Linux sadece bir çekirdek, hadi GRUB ile falan başlattığımızı düşünürsek, ne kadar hazır yazılımlardan uzaklaşacağınıza bağlı uğraşma süresi. Örneğin, kendi shell'inizi, kendi paket yöneticinizi yapmak -veya yapmamak- gibi gibi.
 
Bilgisayarda yapılabilecek en zor iş olarak geçer kendileri bazı kaynaklara göre. Assembly ve C, C++ veya Rust üçlüsünden birini bilmeniz lazım. Özellikle Assembly zorunlu, bu iş için C veya C++'ın yetmediği yerler bile oluyor.

Standart kütüphane kullanmayı unutun bir kere sıfırdan yazacaksanız. "printf()" fonksiyonunu bile mesela kendi başınıza yapmanız gerekecek. Cihazları tanıyacak sürücüler gerekecek. Interrupt desteğiniz olacak. Hele hele GUI'li olsun derseniz eğer, çekirdeğinize GUI kütüphanesi implemente edeceksiniz veya UNIX benzeri bir şey yapacaksanız da Xorg kullanacaksınız. Daha bunun POSIX uyumu, sistem çağrıları, bellek yönetimi, dosyaları barındırmak için dosya sistemi falanı filanı da var... İşiniz zor. Ömür törpüsü kısaca. Ayrıca Linux dağıtımınızla gelen derleyiciyi de bir kenara koyup cross compiler derlemek ile başlayacaksınız.

İkinci bir yöntem ise Linux çekirdeği. Sıfırdan Linux tabanlı bir işletim sistemi yaparsanız çok daha az uğraşacaksınız sıfırdan kernel yazmaya göre.

İlle de sıfırdan çekirdek yazmak istiyorum derseniz, ilk önce işlemci mimarileri ve Assembly hakkında bilgi edinebilirsiniz. İlk adımınız bu olabilir, tabii ileri seviye C, C++ veya Rust biliyorsanız.

Ayrıca şunu da belirteyim, moralinizi bozmak veya onun türevleri değil amacım. Neyse onu söylemiş bulunmaktayım.

Hocam en zor iş oyun motoru değil mi?
 

Technopat Haberler

Geri
Yukarı