İşletim sistemi yapmak

İşletim sistemi yapmak öyle normal kodlamaya benzemez. Adamlar şirket açıyor bilmem kaç tane mühendis çalıştırıyor aylarca uğraşıyor ama onun sonucu bile tonlarca buglu bir işletim sistemi oluyor. Yani değil bir program onlarca bilgisayar bile yetmez bi işletim sistemi kurmaya.
 
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

Ki kendi başına bir işletim sistemi yapman yıllarını alır.
 
PowerPoint işini görür.
Tamam bu acımasız oldu.
Linux from scratch tekniği vardı sanırım. Onu kullanabilirsin.
LFS için iyi Linux bilgisi gerekiyor, önce araştırsın yoksa corklar :D
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
 
Türkçe kaynak bulmak imkansıza yakın. Caydırmak istemem sizi yolunuzdan ama ha deyince yapılacak bir iş değil. Bilgisayar üzerinde yapılan en zor iş olarak geçmekte işletim sistemi yazmak.

Bilginiz olması gereken konulardan sadece bazıları:
  • C, C++, Assembly veya Rust.
  • Dosya sistemleri.
  • İşlemci hakkında bilgiler, kesmeler, işlemcinin belleği nasıl yönettiği... Yazsam roman olur cinsinden. Hatta şöyle söyleyeyim, klavyede yazılan bir karakter bile işlemcinin kesme moduna girmesini sağlıyor.
  • Ağlar, sonuçta sürücülere TCP/IP desteğini sizin yazdığınız kernel sağlayacak. Sürücüler de bu kernel'e sistem çağrıları aracılığı ile ulaşacak. (Değineceğim.) Çünkü sürücüler ile işletim sistemleri, işlemcinin farklı katmanlarında çalışmaktadırlar.
  • Sürücüleri kendiniz yazmalısınız. En basit işletim sistemi için bile VGA Text Mode ile ekrana görüntü vermek için bir sürücü yazmalısınız.
  • Bu işletim sisteminin GUI kütüphanelerini kernel'e de yazabilirsiniz, veya UNIX tarzı bir işletim sistemi yazacaksanız işiniz daha kolay, X11 kullanabilirsiniz.
  • Tabii ki saf X11 kendi başına yetmeyecektir. Qt ile (tabii işletim sisteminizde çalışırsa) veya X11'in sağladığı kütüphaneler ile bir masaüstü ortamı veya pencere yöneticisi yazabilirsiniz, kolaya kaçacaksanız da KDE gibi masaüstü ortamlarını veya sadece Openbox gibi bir pencere yöneticisini tercih etmelisiniz.
  • UNIX demişken, eğer UNIX benzeri bir şeyler ortaya koyacaksanız, UNIX'in yaptıklarına benzer şeyleri implemente etmelisiniz. Örneğin UNIX'in parent-child uygulama ilişkisi gibi.
  • Bu uygulama ilişkisine de değinmişken, bu uygulama ilişkisini sağlamak için sistem çağrılarınız olmalı. fork(), exec() gibi. Linux'taki sistem çağrılarını görmek için uçbirim'e "man syscalls" yazmanız yeterli.
  • Sıfırdan çekirdek yazacaksınız, ama çekirdeğinizin C gibi bir dile desteği olmayacak, kabul edilemez. "libc" diye tabir edilen C kütüphanesini işletim sisteminizin kernelinin sistem çağrılarına göre baştan yazmalısınız. Kernel'in sistem çağrıları UNIX çağrılarıyla birebir eşitse, daha az yorucu bir iş olacaktır.
  • Kendi işletim sisteminize geliştirici çekmeniz lazım, bunun için de geliştirici araçları gerekli. Kernel için geliştirme yapılabilsin istiyorsanız, Herhangi bir C derleyicisini sisteminize port etmeniz gerekli. GCC'yi port edebilirsiniz.
  • UNIX felsefesine uygun olarak bir tane kabuk (shell) gerekli. Ya kendiniz yazabilirsiniz, ya da Bash gibi, Zsh gibi kabukları sisteminize port edebilirsiniz.
  • Şu anki UNIX benzeri veya UNIX tabanlı sistemlerde "pseudoterminal" yapısı kullanılıyor, yani terminal emüle edilmekte. Terminal emülatörü gerekiyor.
  • Bellek yönetimi. Bir işletim sistemi için olmazsa olmaz.
Daha da fazlası var. Fakat daha da uzatıp bu listeyi Topkapı Sarayı ihtiyaç listesi gibi bir hale getirmeye gerek yok bence.
Bu efsane cevabımın 1.yılı kutlu olsun!
 
Son düzenleme:
Ben kendi işletim sistemini yapmak istesem hangi programlara ve nelere ihtiyacım olur?
Assembly ve C ile bir işletim sistemi yapabilirsin.
Yapamazsın diyenlere bakma, yaparsın ama basit bir şey çıkar.
Eğer Windows, Linux veya türevi gibi bir şey yapmak istiyorsan bir 100-150 kişiye ihtiyacın var ki bu kişilerle ancak Windows NT 4.0/98 veya MacOS 9 gibi bir sistem yaparsın.
 

Geri
Yukarı