C'de işletim sistemi yapmak

Biliyorum milyoner olmak için yazmayacağım zaten. Raspberry Zero için merak saldığım için yazacağım. Hep kalıp cümleler, biliyorum XP'yi tek başına yazman için 48 yıla ihtiyacın var, onu da biliyorum. Ben size C ile yapabilir miyim dedim. Gömülü sistemler için iyi diyorlar diye.
 
Ben size C ile yapabilir miyim dedim. Gömülü sistemler için iyi diyorlar diye.
Şöyle yapabilirsin. Raspberry Pi OS'u CLI modunda çalıştırırsın, ekrana yazı yazdıracak C kodunu yazarsın, GCC ile derleyip çalıştırırsın. Bunun için işletim sistemi yapmana gerek yok.
 
Ekrana yazı yazdırmak basit iş. MS-DOS gibi bir sistem yapmak istiyorum.
 
İfadeler: AHT
Ekrana yazı yazdırmak basit iş. MS-DOS gibi bir sistem yapmak istiyorum.
En azından çok daha basit hocam sizin dediğiniz. Kendiniz kullansanız bile yeter anladığım kadarıyla. Yani yeteri kadar tecrübeye sahipseniz eğer OSDev Wiki'den okumaya başlayın derim ama OSDev'de yazan bilgiler x86 bilgisayarlar için, Raspberry Pi için ARM karşılıklarını bulmalısınız aynı bilgilerin.

Öncelikle işletim sisteminizi hızlı geliştirebilmek açısından C kütüphanesini implemente etmenizi tavsiye ederim. printf(); fonksiyonu sizin kullanımınıza göre basit olacaktır, örneğin x86'da video BIOS'unun VGA Text Mode için karakter okumaya başladığı adres olan 0xB8000 adresi kullanılır, böylece sizin bahsettiğiniz DOS tarzı görüntü ekrana verilir. ARM'da bu tarz bir mod var mı, varsa nasıl çalışıyor vs. araştırmalısınız, ben (henüz) bilmediğim için yardımcı olamayacağım ARM konusunda maalesef.
Şöyle yapabilirsin. Raspberry Pi OS'u CLI modunda çalıştırırsın, ekrana yazı yazdıracak C kodunu yazarsın, GCC ile derleyip çalıştırırsın. Bunun için işletim sistemi yapmana gerek yok.
Hocam maalesef aynı tadı, zevki vermiyor.
 
Bir işletim sistemi yapmanız için sistem çağrısı (syscall), dosya sistemi (filesystem) gibi konseptlere tanıdık olmanız lazım. Aynı zamanda dokümanlarda, manüellerde kaybolmanız lazım olacak. Yapabilirsiniz ama hazırlıklı olun. MS-DOS tarzı işletim sistemi yapmak fazla zor değil ama.
Düzeltme: İmla.
 
Bunu neye dayanarak söylüyorsunuz? Açıklayabilir misiniz? Varsa kaynaklarınız, okumayı da çok isterim.
C ile her şeyi sıfırdan nasıl yazacak? Sistemde hiçbir şey olmayacağı için compiler de yüklenemeyecek. Tek seçeneği makine koduyla yazmak.
 
C'yle her şeyi sıfırdan nasıl yazacak? Sistemde hiçbir şey olmayacağı için compiler de yüklenemeyecek. Tek seçeneği makine koduyla yazmak.
C ile yazdığın her şey sonunda makine koduna dönüşür. Kernel dediğin bütün bir sistem değil. Binlerce puzzle parçasından sadece biri. Belki en önemli parçası ama kendi başına bir sistem değil. C ile kernel yazılamayacağını iddia ettiniz. Şimdi de C ile her şeyin sıfırdan yazılamayacağını iddia ediyorsunuz. Herhangi bir link, makale, YouTube videosu gibi bir şey bekliyorum. Merak ettim neden yazılamacağını.
 
C ile her şeyi sıfırdan nasıl yazacak? Sistemde hiçbir şey olmayacağı için compiler de yüklenemeyecek. Tek seçeneği makine koduyla yazmak.
  • Bu dediğiniz yargı 1970'li yıllarda UNIX işletim sisteminin C dili ile yazılması ile birlikte yıkıldı. Cross compiler dediğimiz sistemde bulunan derleyiciden bağımsız bir derleyici ile C kodu derlenebiliyor kernel için.
  • Assembly illa ki gerekecektir, (x86 için konuşuyorum, durum ARM'da nasıl bilemiyorum) en temelinden C ve C++ programları (kernel dahil olmak üzere) belleğin onlar için önceden hazırlandığını düşünür, fakat sistem başlangıcında bellek önceden ayarlı değildir. Assembly ile işlemcinin stack pointer'ı düzenlenerek bu ayarlama yapılabilir.
  • Bu yazdığımız Assembly kodu ile C kodunu birleştirebilmek için linker'a ihtiyacımız var, cross compiler ile geliyor. Örneğin GCC kullanıyorsanız "ld" isimli linker yazılımı da gelir, böylece derlenen Assembly dosyasını ve C dosyasını bir dosyada (kernel.elf gibi) toplayabilirsiniz.
 
Ben ondan bahsetmiyorum. Compiler olmadan nasıl makine koduna dönüşecek? Kernel olmadan sistemin kalanı nasıl yazılacak?
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…