C'de işletim sistemi yapmak

  • Konuyu başlatan 391039
  • Başlangıç Tarihi
  • Mesaj 23
  • Görüntüleme 3.087
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.
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.
 
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.
 
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ı.
Ben ondan bahsetmiyorum. Compiler olmadan nasıl makine koduna dönüşecek? Kernel olmadan sistemin kalanı nasıl yazılacak?
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı