İşletim sistemi nasıl programlanır?

Nasıl bir işletim sistemi yapmayı düşünüyorsunuz? Eğer tek tık ile Windows, GNU/Linux, macOS ve BSD gibi bir işletim sistemi yapmayı hayal ediyorsanız unutun. Bunun için yıllarca bir sürü araştırma yapıp, çekirdeği yazıp, işletim sistemi yazıp, yazılımları yazıp, GUI'yi yazıp üstüne bir de sürücü yazılımını yazmanız gerekiyor. Üstüne üstlük bu işletim sistemini bir ton donanımda test edip, hataları ayıklayıp yok edip, sürümleri, sürücüleri, yazılımı ve donanımı yönetecek programları yazmaya ihtiyacınız var. Bunun da üstüne sürücü yazılımı için birçok firma ile anlaşmanız gerekiyor. Bir ton iş ve güç. Bir GNU/Linux dağıtımı bile 100'lerce kişi tarafından geliştiriliyorken siz tek başına bu işin içinden çıkamazsınız.
 
Nasıl bir işletim sistemi yapmayı düşünüyorsunuz? Eğer tek tık ile Windows, GNU/Linux, macOS ve BSD gibi bir işletim sistemi yapmayı hayal ediyorsanız unutun. Bunun için yıllarca bir sürü araştırma yapıp, çekirdeği yazıp, işletim sistemi yazıp, yazılımları yazıp, GUI'yi yazıp üstüne bir de sürücü yazılımını yazmanız gerekiyor. Üstüne üstlük bu işletim sistemini bir ton donanımda test edip, hataları ayıklayıp yok edip, sürümleri, sürücüleri, yazılımı ve donanımı yönetecek programları yazmaya ihtiyacınız var. Bunun da üstüne sürücü yazılımı için birçok firma ile anlaşmanız gerekiyor. Bir ton iş ve güç. Bir GNU/Linux dağıtımı bile 100'lerce kişi tarafından geliştiriliyorken siz tek başına bu işin içinden çıkamazsınız.

Windows gibi bir işletim sistemi yapmak istiyorumda ben bu sorunlardan kalkarımda sen eğer bunları yapımı için kayak site verir misin?
 
Windows gibi bir işletim sistemi yapmak istiyorumda ben bu sorunlardan kalkarımda sen eğer bunları yapımı için kayak site verir misin?
Ağ üzerinde "Sıfırdan adım adım işletim sistemi yapmak" şeklinde bir belge arıyorsunuz. Eğer yanlış anlamadıysam bunu aramaya devam edin(!) Var olan özgür işletim sistemlerinin (mesela GNU/Linux) kaynak kodlarına göz atarak nasıl çalıştığını anlamaya çalışabilirsiniz. Ama her şeyden önce başka işletim sistemlerini deneyimleyip nasıl çalıştığını anlayıp sonra da istediğiniz işlemleri yapmayı öğrenin ve deneyin. GNU/Linux dağıtımları bu işler için elverişlidir.
 
Windows gibi bir işletim sistemi yapmak istiyorumda ben bu sorunlardan kalkarımda sen eğer bunları yapımı için kayak site verir misin?
Kendi işletim sistemini yapmak istiyorsan ilk önce başka işletim sistemlerinin üstüne istediklerini yapmayı deneyebilirsin.
 
Donanımı tanıyacak sistem nasıl yazılır? Örneğin ; klavye.

Windows bu işi nasıl yapıyor basitçe anlayalım. Bir bilgisayarda parçalara güç veren şey nedir? Güç kaynağı. O gücü 12V kanalından alıp parçalar için gerekli olan 3V, 5V gibi değerlere hassas biçimde düşüren iskelet parca nedir? Anakart. Peki anakart üzerinde bulunan parçalar tamamen rastgele biçimde mi çalışıyor? Tabii ki hayır. Birbirleriyle iletişime geçip uyumlu olarak çalışıyorlar. Bunu sağlayan nedir? Denetleyiciler (controller). Peki bu denetleyiciler hangi durumda ne kadar veri aktaracak (0V - 5V veya 0-1 binary olarak da bilinir) sorusunun cevabı nasıl anlaşılır? Sürücü yardımıyla. Tebrikler şu anda donanım seviyesinde ilk aşama tamamlandı.

Peki bu donanım sürücüleri, anakart üzerinde nasıl tanımlama yapıyor? Yazılımların en alt seviyesi olan BIOS yardımıyla. Kullanıcı ve donanım arasında iletişimi sağlayacak işletim sistemine sıra geldi. BIOS ile doğrudan iletişim kuran bir şey gerekiyor. Bunun adı çekirdek (kernel). Windows NT altyapısını kullanıyor güncel sistemlerinde. Peki tüm bu iletişimi sağlamak için bazı şeyleri kalıcı depolama (disk) üzerinde tutması gerekmez mi? Evet bunlar dll kütüphaneleri ve diğer binary dosyalar (Windows klasöründe bulunurlar).

Bilgisayara oyuncu klavyesi bağladın ve güç geldiğini gördün. Ancak tuşlar hicbir şekilde tepki vermiyor. Neden? Çünkü ; klavye için yazılmış olan sürücünün , ilgili OS (işletim sistemi) içerisindeki dll kütüphanelerini düzgün bicimde kullanması gerekir. Kullanıcı etkileşimini sağlayan kütüphaneler için kernel32.dll veya user32.dll örnek verilebilir.

İş bitti mi? Hayır. Şimdiye kadar her şey yolunda olsa bile tanıtılmış olan donanımın sabit diske kaydedilmesi gerekir. Ve kayıtlı bilgi de her defasında kontrol edilip otomatik olarak Windows tarafından görülmeli. Tam da bu amaç için Registry (kayıt defteri) denilen yapı kullanılıyor. HKLM > System > CurrentControlSet dizini altında donanım bilgilerini tutar. Windows her açılışında burada tanımlanmış olan donanımı görür ve her defasında sürücü yüklenmesi gibi gereksinimi ortadan kaldırmış olur.

Basitce bir klavye tanıtma bu şekilde :)
 
Kendi işletim sistemini yapmak istiyorsan ilk önce başka işletim sistemlerinin üstüne istediklerini yapmayı deneyebilirsin.

Ben işletim sistemi kullanmayı biliyorum asıl ben kernel kendim yazmak istiyorum yukarıdaki sorularımım cevaaplarını içeren bir kaynak verir misin?
 
Ben işletim sistemi kullanmayı biliyorum asıl ben kernel kendim yazmak istiyorum yukarıdaki sorularımım cevaaplarını içeren bir kaynak verir misin?
Yardımcı olabilir.
 
Donanımı tanıyacak sistem nasıl yazılır? Örneğin; klavye.

Windows bu işi nasıl yapıyor basitçe anlayalım. Bir bilgisayarda parçalara güç veren şey nedir? güç kaynağı. O gücü 12v kanalından alıp parçalar için gerekli olan 3v, 5V gibi değerlere hassas biçimde düşüren iskelet parca nedir? anakart. Peki anakart üzerinde bulunan parçalar tamamen rastgele biçimde mi çalışıyor? Tabii ki hayır. Birbirleriyle iletişime geçip uyumlu olarak çalışıyorlar. Bunu sağlayan nedir? denetleyiciler (controller). Peki bu denetleyiciler hangi durumda ne kadar veri aktaracak (0v - 5V veya 0-1 binary olarak da bilinir) sorusunun cevabı nasıl anlaşılır? sürücü yardımıyla. Tebrikler şu anda donanım seviyesinde ilk aşama tamamlandı.

Peki bu donanım sürücüleri, anakart üzerinde nasıl tanımlama yapıyor? Yazılımların en alt seviyesi olan BIOS yardımıyla. Kullanıcı ve donanım arasında iletişimi sağlayacak işletim sistemine sıra geldi. BIOS ile doğrudan iletişim kuran bir şey gerekiyor. Bunun adı çekirdek (kernel). Windows NT altyapısını kullanıyor güncel sistemlerinde. Peki tüm bu iletişimi sağlamak için bazı şeyleri kalıcı depolama (disk) üzerinde tutması gerekmez mi? Evet bunlar DLL kütüphaneleri ve diğer binary dosyalar (Windows klasöründe bulunan şeyler).

Bilgisayara oyuncu klavyesi bağladın ve güç geldiğini gördün. Ancak tuşlar hiçbir şekilde tepki vermiyor. Neden? Çünkü; klavye için yazılmış olan sürücünün, ilgili OS (işletim sistemi) içerisindeki DLL kütüphanelerini düzgün bicimde kullanması gerekir. Bu örnekte, kullanıcı etkileşimini sağlayan kütüphaneler için kernel32.dll veya user32.dll örnek verilebilir.

İş bitti mi? Hayır. Şimdiye kadar her şey yolunda olsa bile tanıtılmış olan donanımın sabit diske kaydedilmesi gerekir. Ve kayıtlı bilgi de her defasında kontrol edilip otomatik olarak Windows tarafından görülmeli. Tam da bu amaç için registry (kayıt defteri) denilen yapı kullanılıyor. Hklm > System > currentcontrolset dizini altında donanım bilgilerini tutar. Windows her açılışında burada tanımlanmış olan donanımı görür ve her defasında sürücü yüklenmesi gibi gereksinimi ortadan kaldırmış olur.

Basitce bir klavye tanıtma bu şekilde :)

Tamam anladımda işte donanım bilgilerini nasıl BIOS'tan alabilirim bunu yapmak için bana kaynak veerir misiniz?
 
Tamam anladımda işte donanım bilgilerini nasıl BIOS'tan alabilirim bunu yapmak için bana kaynak veerir misiniz?
StackOverflow'dan sormayı ne dersiniz? Tamamen yazılım üzerine kurulu bir forum olduğu için detaylı bilgi alma şansınız daha yüksek.
 

Yeni konular

Geri
Yukarı