Şimdi Ara

X86 için bootloader nasıl yazılır?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
17
Cevap
0
Favori
1.403
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Bu günlerde işletim sistemleri ve assembly diliyle uğraşmaya başladım. Bootloader nasıl yazılır 512Kbyte olayını nasıl gerçekleştireceğiz..
    Sizce baştan yazmak yerine cosmos gibi açık platformda geliştirilmiş kernel + bootloader ile devam etmek daha mı akıl karı?



  • tam da nick'ine göre cevap verecektim ki sen cosmos demişsim

    C# ile yazacaksın galiba , managed bir işletim sistemi olur yani ram ve işlemci yönetimi durumunda sıkıntı yaşayabilirsin.

    Kernel ve bootloader hazır kodlar benim bildiğim kadarıyla , kendi derleyicisi var birde bu eklentinin , c# kodlarını x86 assembly'sine çeviriyor ve çalıştırıyor

    Birazda cosmos kütüphanelerine bağlı kalarak yazarsın , hani vga olur audio olur ,vb...

    Soru , ciddi anlamda işletim sistemi yazmayla alakalı.Mesela python os var , python script dili bile olsa linux kerneli üzerinde işletim sistemini yazmışlar ve gayet başarılı bir biçimde çalışıyor.

    Bide hangi tür aygıtları destekleyecek o var kendi driver'ı nı yazamazsın.

    Zevk için denenebilir ama.




  • Kemâncı kullanıcısına yanıt
    Hocam merhaba, bir kismi duzeltmek gerekebilir.

    Python gibi yorumlanabilen diller ile isletim sistemi yazmak uygun degildir. Her is icin uygun araclar vardir :)

    Vida'yi bicakla sokmek yerine, tornavida kullanmak daha uygundur :)

    Python, isletim sistemi yazmak icin uretilen bir dil degil. Zaten bu gibi amaclar olmadan da cok degerli bir dil Python. Python mevcut bir isletim sistemi uzerinde calismak uzere gelistirilmistir.

    Python interpreter'ı ve memory management'i da bunu gosterir. Derlenen dillerde stack ve heap denen kavramlar var en onemli islemlerin yapildigi yerler mesela.

    Bunlardan heap'e ornek verecek olursak runtime zamaninda performans kayiplarina yol acar. Bu yuzden malloc gibi secenekler de vardir. (new ve malloc'tan bahsediyorum. new nesnenin buyuklugu kadar alan ayirir ve o alanda nesne olusturur. bu olay heap'de gerceklesir ve runtime olacagi icin performans kaybi yasatir. new'u delete islemi ile sonlandirmaniz gerekir) bu gibi olaylari iste compiled denen derlenebilir dillerde denetleyebilirsiniz. python ile bunu yaparsaniz buyuk ihtimal makinenin butun gucunu kullanip eritirsiniz. Burada işte onemli olan pointer kavramidir.

    Yani burada aslinda olay sadece kendi driver'larını yazmak değil. Olay sadece driver'ın yazılması ile alakalı değil. İşletim sistemlerinin oluşturulma süreçleri ve çalışma süreçleri çok önemli süreçlerdir. Python'da olay şöyle gerçekleşir;

    her açılışta kodları tekrar oku

    bu da inanılmaz yavaşlık demektir.

    Saygılar başarılar




  • Hocam tam açıklayıcı bir cevap vermişsiniz.

    Benim anlatmak istediğim "soru , ciddi bir işletim sistemi yazmakla alakalı" kısmı C ve ASM öğrenip , ciddi bir işletim sistemi projesine başlamakla ilgiliydi vediğim örnek ise , java'yla işletim sistemi yazmak , ptyhon'u kullanarak işletim sistemini yazmak , c# , ve diğer diller gibi..

    http://python-os.info/en/

    Burda anlatmak istediğim script dili olan python ile bile işletim sistemi yazılabilir ve linux kerneli kullanarak driver , bootloader , kernel işini atlayıp direk sistemde denemeler yapmak yapılabilir.

    Ve hocam cidden teşekkürler , python hakkında biraz daha bilgiler öğrenmiş oldum , script dillerinin tümü aynı sayılır javascript , python . ama bende python'un yeri ayrı javada 50-60 satırda yazdığım opencv uygulaması python ' da 20-25 satırda hallediliyor




  • Kemâncı kullanıcısına yanıt
    Haklısınız hocam burada sorun yok yazilabilir. Java ile de yazilan sistemler var. 4 yil once kernel dahil Java ile yazilian farkli bir isletim sistemi gormustum. Projesi ne durumda bilmiyorum.

    Aslinda yazilamaz demek yanlis olur da uygunlugu tartisilir tabii :)

    Evet Python syntax anlaminda cok rahat ayrica cogu isleri daha rahat yapabiliyorsunuz :) Sirf bu yuzden Veri cekme aracini Qt + Python kullanip yaziyorum ben :)

    Hangisini tercih edersin diye sorsaydin OpenCV icin yani ben Python'ı tercih ederim.

    PyPy + OpenCV ile C kadar hiz alabilirim mesela :) Bir de Python Image Library vardi yanilmiyorsam. PIL, openCV kullanip bir gorselin ozunu degistirme isini OpenCV'ye gore daha rahat sekilde PIL ile yapabiliyoruz oneririm :) Tabii OpenCV kadar geliskin olmayabilir :)

    Saygilar :)
  • Hocam bu python gitgide beğenmeye başlıyorum ama acaba yanlışmı yaparım diye python yerine , c# ve javayla uğraşıyorum sonuçta script dili ama mükemmel
  • Ben şuan x86 asm ve c üzerinde çalışıyorum. Ancak bunlar üzerinde harcayacağım zaman kadar cosmos'da optimizasyon yapabilirim ve c# ilede yeterli bir işletim sistemi yazılabileceğini düşünüyorum. Genede asm ve c'i bitireceğim ondan sonra yolumuza bakacağız artık.

    Python konusunda da çalışma esnasında c'e yakın performanslar alsa da çalışma başlangıç hızları çok fark edecektir. Tabi bu her dilde geçerli değil bazı dillerde asm çok zıplıyor delphi gibi. O yüzden o tür dillerden uzak durmak lazım.
  • @Kemâncı

    Butun dilleri ayni anda ogrenmemek gerekiyor. Birisin ogrenip digerlerine gecis yapmak daha mantikli bence. Cunku kargasalar olusuyor.

    @co3moz

    Saf asm ile de os yazanlar var. Ancak bunu yapmak kulfetli bir is. Bu yuzden C tercih ediliyor.

    Burada onemli olan x86 registers'larina erisim saglayabilmek. Bazi islevlerin adres degerlerini degistirmek gerekebilir. Cunku hiz performans acisindan. Cosmos bu konuda bu destegi sagliyor mu acaba? Bunu sorma sebebim su buyuk ihtimal Cosmos size "Heap Usage" hakkinda bazi degerler sunacaktir calisma zamaninda. Buradaki byte degerlerini minimum'a indirip, hiz artislarina imkan saglanabilir. Ayrica C# icin saglanan grafik kutuphaneleri ile de bir masaustu yoneticisini ekleyebildiginiz zaman mukemmel isler yapilabilir gibi en azindan C ve C++ ile ugrasmak istemeyen icin cok daha rahat olmali.

    Bir de ben cok ilgilenmiyorum ama Mono-Develop forumlarinda "Singularity" diye bir olay gormustum. Sing#'dan bahsediliyordu.




  • Aynen , doğru hocam hepsinin çok farklı kullanım methodları ve sözdizimleri var kafa karışıtırıcı olabilir en iyisi bildiğim diller ile devam edeyim
  • X-1 kullanıcısına yanıt
    C ile register'lere __asm__ ile erişiliyor. Cosmosda da register değiştirici fonksiyon vardır diye düşünüyorum. Sonuçta IL2CPU sırasında araya bir kod sıkıştırabiliriz.
  • co3moz kullanıcısına yanıt
    Yok ben C# ve Cosmos icin sormustum. Ben OS gelistirecek olsam D dilini kullanir gelistiririm :) Oyle bir fikrim var kisisel bi calisma gibi.

    Ama C# inline assembler da sagliyor mu cosmos icin acaba.
  • X-1 kullanıcısına yanıt
    c#'de il injection var ancak doğrudan x86 yok çünkü dil zaten asm kullanmıyor. Cosmos'da x# var direkt zaten. Assembly'i sharplamışlar.

    Bu linkte bir takım açıklamalar var
    http://www.codeproject.com/Articles/220076/Csharp-Open-Source-Managed-Operating-System-Intro
  • bence en baştan kernel yazmak oldukça uzun ve zor bir iş onun yerine hazır linux kernelini kullanabilirsin.
  • Kemâncı kullanıcısına yanıt
    Hazıra kaçmak olacak o. Free BootLoader'de var zaten kolayca BL'i hallediyorsun c ilede uygulamanı yazıyorsun. Ancak asıl konu BL'nin nasıl yazıldığı.
  • quote:

    Orijinalden alıntı: co3moz

    Hazıra kaçmak olacak o. Free BootLoader'de var zaten kolayca BL'i hallediyorsun c ilede uygulamanı yazıyorsun. Ancak asıl konu BL'nin nasıl yazıldığı.

    sen bilirsin.c# ve x# gibi dillerle olacak iş değil diyorum ben.o cosmos ' u ve il derleyicisini yazan ekip tarafından kullanılmış deneme amaçlı bir dil.Yani ciddi anlamda kernel , bootloader c , asm öğrenip başlayabilirsin.


    ki , bu işler basit olsaydı her önüne gelen net yazılımcısı bir kernel ve bootloader yazardı...
  • Kemâncı kullanıcısına yanıt
    Zaten net'le yazmayı düşünmüyorum. Daha öncede dediğim gibi asm ve c üzerinde çalışıyorum. Fakat boot loader deki 512k meselesini anlamadım.
  • quote:

    Orijinalden alıntı: co3moz

    Zaten net'le yazmayı düşünmüyorum. Daha öncede dediğim gibi asm ve c üzerinde çalışıyorum. Fakat boot loader deki 512k meselesini anlamadım.

    dediğim gibi kitaplara bakarak olacak birşey olacağını sanmıyorum açık kaynak örneklere bakarak kendini geliştirebilirsin.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.