Unix.stackexchange.com'a hoş geldiniz!
Sorunuza kolay bir cevap yok ve benden çok daha iyi insanlar Linux çekirdeği ve genel olarak işletim sistemleri hakkındaki tüm kitapları yazdılar.
Projenin kapsamı hakkında: bir işletim sistemi yazmak basit bir iş değildir! Minix gibi maksatlı bir işletim sistemi bile oldukça karmaşık bir şey! Size Linux hakkında bir fikir vermek için şimdiye kadar yazdığınız C programlarını düşünün. Ortalama bir üniversite dersi en fazla birkaç bin satır C olma eğilimindedir. Sanırım son yıl projem yaklaşık 30-35.000 satır C ++ idi. Linux çekirdeği kabaca 13.000.000 satır C kodudur.
Neden hepsi ayrı dosyalarda? Büyük projeler lojistik ve pratik nedenlerle ayrı dosyalarda saklanır. Sadece bir editöre 13.000.000 satır dosyası yüklemeyi düşünün! Linux gibi büyük bir projeyle mücadele etmeden önce, C becerilerinizi kesinlikle 'neden birden fazla dosya' sorununun kendisine cevap verdiği noktaya getirmelisiniz. Ayrıca C kodunu da okuyabilmeniz gerekir , sadece yazmakla kalmaz. (ilk bakışta göründüğünden daha zor)
Kesinlikle C konusunda çok yetkin olmalısınız. Çekirdek binlerce kişi tarafından korunur ve her birinin kişisel C deyimlerini anlamanız istenir (oldukça katı çekirdek kodlama standartları dahilinde verilir, ancak yine de - herkes kendi problem çözme stilleri).
C fu'nuzu aldıktan sonra işletim sistemlerini anladığınızdan emin olun. Bu, kodu anlamanıza yardımcı olacaktır. Tüm Linux gerekli değildir. Uygun çekirdek oldukça küçük! Ne şişiriyor:
- Çeşitli cihazlar için binlerce donanım sürücüsü.
- API'leri ve sürücü yazmayı basitleştirmek için çeşitli cihaz sınıfları için soyutlama katmanları. Örneğin, dosya sistemleri için VFS, giriş aygıtları için Olay katmanı vb. Var.
- Şiddetli miktarda koşullu derlenmiş kod ve Linux çalıştıran çeşitli mimarilere hitap eden dosyalar (her Linux makinesi bir Intel PC değildir ve bazıları beklediğinizden inanılmaz derecede farklıdır). Çekirdek bu farklılıklarla uğraşmak zorunda ve bu da daha fazla kod anlamına geliyor.
Hemen bulacağınız bir sorun, bu bileşenlerin fişini çekmenin, değiştirmenin ve tekrar takmanın o kadar kolay olmamasıdır. Çok sayıda ilişki vardır. Kısacası, çekirdeğin bitlerini değiştirmek zor.
İnsanların Minix'i size önermesinin nedeni basit: tam bir işletim sistemi, ancak Linux kadar karmaşık bir sistemin ihtiyaçları tarafından yüklenmiyor. Kod küçük ama yine de tam işlevsellik sağlıyor. Sonuçta, Linux'un ilk sürümleri Minix'ten ilham aldı.
Elbette, Minix'in bugünlerde daha az donanım desteği var. Ne olmuş yani? Bu bir nimet! Modern bilgisayarlar çok iyi sanallaştırır. Bunu kendi yararınıza kullanın: Minix'i çalıştırmak için bir VM çok hafiftir, geliştirmeyi göz kamaştırır.
Projeniz bir işletim sistemi kurmaksa, Minix'i inceleyerek başlamaktan daha kötüsü yapabilirsiniz. Minix'in ' Andrew Tanenbaum'un Modern İşletim Sistemleri'ne eşlik etmesi için yazılan kitabı satın almak ve okumak da isteyebilirsiniz .
Ayrıca hedeflerinizi belirlemeli ve terimlerinizi tam olarak tanımlamalısınız . Bir işletim sistemi tanımınız Microsoft ise (GUI ve tam yazılım paketine sahip bir işletim sistemi), çok uzun bir proje için hazır olabilirsiniz! Sonuçta, yüz binlerce insan 1960'lardan beri bizi bulunduğumuz yere getirmek için çalıştı.
Son olarak, Bilgisayar Bilimcisi'nin savaş çığlığını hatırlayın: ' asla tekerleği yeniden icat etmeyin! '(elbette öğrenirken istisnalar yapmak isteriz. Ve eğlence için :))