Bir işletim sistemi yapmak için nelere ihtiyaç var?

565148

Decapat
Katılım
19 Temmuz 2022
Mesajlar
643
Çözümler
8
Neleri öğrenmeliyim veya osdev tarzı nerelere bakmalıyım? Şu anda bildiklerim: C/c++ asm vb öğrenmem gerektiği, ve şu üç kaynak 1 2 3
 
İşletim sistemi yazılım yazmaya, program yazmaya benzemez.

Önce sağlam bir çekirdek yapılır. Çekirdeği üzerinden yürür işlemler.

Sonra I/O bilgi alım gönderim işlemlerine başlanır. CPU'ya erişme, bellek yönetimi, disk yönetimi gibi tonlarca alanını yapmanız gerekir. Ardından Bootloader yapmanız gerekir. Sistemin kernel yapısını oluşturup çalışabilir hale getirmeniz gerekir. Ağ protokolleri, veri arayüz formatları disk yapısı, dosya sistemi gibi tonlarca daha sayabileceğim alanı yapmanız gerekir.

Sıfırdan bir çekirdek yazmak tek kişi için imkansız gibi bir şeydir.

C/C++'ı aşırı iyi bilseniz bile, bilgisyar mimarisini, işlemci mimarisi ve çekirdek mimarisine hakim değilseniz yapamazsınız.

Uzun lafın kısası, tek başınıza neredeyse imkansız yapmanız
 
Son düzenleme:
Yapan bir iki kişi var dahi sınıfında olan, adı Linus Torvalds birinin
Onun dışı dendiği gibi çok zor, isterseniz Linux From Stratch falan deneyin Linux bilginiz varsa.
 

Yapamayacağımı biliyorum fakat yapmaya kalkışırsam nelere ihtiyacım var sorum buydu.
 
Windows, macOS, GNU/Linux gibi işletim sistemleri yapmak aslında Burc Halife, Taipei 101 gibi gökdelenler yapmak gibi bir şey. Yani tek bir inşaat mühendisi ya da tek bir inşaat işçisi Burc Halife gibi bir gökdelen dikebilir mi? Tek bir bilgisayar mühendisi de yapamaz.

Code Project sitesinde çok güzel bir makale var. Kendi kernel (çekirdeğini) yazabilirsin. Zor değil ve o makalede hazır yapılmış bir örnek bile var. O makaleyi (Create Your Own Kernel In C adıyla geçiyor) okumanı şiddetle tavsiye ederim. Google'a yazınca ilk sonuç olarak çıkıyor zaten.

İşletim sistemi dediğimiz yapı sadece kernel (çekirdekten) oluşmaz. Yüzlerce, binlerce program, modül, araç ve bunları yazan yine binlerce, belki onbinlerce yazılım mühendisini kapsar. Bu yüzden Windows, macOS ya da GNU/Linux gibi işletim sistemlerini Burç Halife, Taipei 101 ya da Yeni Dünya Ticaret Merkezi gibi yapılara benzettim. Gerçekten o kadar büyükler. Bu nedenle tek bir işletim sisteminde farklı alanlarda uzman kişiler çalışabilir. Kimileri sistem programcısıdır ve arka planda çalışır. Kimileri network uzmanıdır ve o alanda çalışır. Kimi tasarımcıdır işletim sisteminin tasarım işlerini yapar. Kimi döküman uzmanıdır ve sistemin kullanıcılar için gerekli dökümanlarını hazırlar. Kimi güvenlik konusunda uzmandır ve sistemin güvenlik açıklarını ya da hatalarını kontrol eder ve bildirir. Kimi bilişim hukukunda uzmandır ve yazılım lisansları ve patentleri gibi farklı alanlarda çalışır. Ticari bir yazılımsa pazarlaması ile ilgilenen ayrı bir ekip vardır.

Bir işletim sisteminin geliştirilmesine katkıda bulunmak istiyorsan topluluk tarafından geliştirilen herhangi bir GNU/Linux dağıtımına katılabilirsin ya da destek olabilirsin. Kendin de bir GNU/Linux dağıtımı geliştirebilir ve bir topluluk projesi meydana getirebilirsin. GNU/Linux dağıtımları açık kaynak kodlu ve özgür yazılımlar oldukları için herkese açıktırlar. Windows ya da macOS işletim sistemleri farklı olarak sadece Microsoft ya da Apple firmasının çalışanları tarafından kaynak kodları görülebilir ve geliştirilebilirler. Scratch for Linux kitabı sayesinde sıfırdan bir GNU/Linux dağıtımının nasıl yapıldığını öğrenebilirsin. Kitabı anlayacak kadar GNU/Linux bilgin yoksa mevcut dağıtımları kullanmaya başlayarak ve kendini eğiterek gelişebilirsin.

Son olarak teknik açıdan işletim sistemlerinin nasıl tasarlandıklarını ve yazıldıklarını merak ediyorsan bu konuda iki kitap önerim olacak. Birincisi Silberschatz'ın Operating System Concepts kitabı. Bu kitap sayesinde bir işletim sisteminin ne demek olduğunu tam anlamıyla kavrayabilirsin. İkincisi ise Sebesta'nın Concepts of Programming Languages kitabı. Bu kitap sayesinde de işletim sistemlerini yaratmak amacıyla kullanılan programlama dillerinin nasıl tasarlandıklarını ve yazıldıklarını öğrenebilirsin.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…