Kendi İşletim Sistemini Yazmak
-
Konuyu açan arkadaşı, bilgi seviyesini bilmiyorum, kendisini tanımıyorum. Söyleceklerim geneldir, arkadaş lütfen üzerine alınmasın. Genel olarak TBT deki genç arkadaşların böyle bir hatası var.
"Aklıma böyle bir şey geldi haydi yapaym" diye bazı olaylara girişmeye kalkılıyor. Sonra da doğal olarak hiç bir şey başarılamayıp motivasyon kaybına uğranıyor. Çok basit olacak ama "emeklemeden koşamazsınız".
Konuya gelirsek İşletim Sistemi Yazmak isteyen bir arkadaşın;
- http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/0136006639 bu kitabı veya bir benzerini okudum mu, bahsedilen konseptler hakkında bilgi sahibimiyim?
- Assembly, C, gerekise C++ bilgim ne seviyede?
- Sistem Programlama konusunda tecrübelerim nelerdir?
- WinApi, Winsock gibi altseviye kütüphanelerle çalıştım mı? Arkaplanda işlerin nasıl yürüdüğüne dair bir fikrim var mı?
- Sistemin donanım boyutunda hakimiyetim nedir?
- Interrupt nedir, IRQ nedir, mutex nedir, context switching nedir, .... nedir, .... nedir gibi bir sürü kavram hakkında bilgi sahibi miyim? (Hello World seviyesinde bunlara gerek yok diyenler olacaktır, ama bu kavramlar hakkında bilgi sahibi olmadan bu işlere girmek mantıklı değil)
gibi basit soruları kendine sorması lazım, eğer kendini yeterli görürse bu işlere girişmesi değilse Windows Platformu için konuşuyorum (asıl yol haritası bu)
Programlama->C/C++->WinApi(Win32)->Assembly->Native API-> DDK (yeni adıyla WDK) öğrenip ondan sonra bu işlere girmesi gerekir. Yani User Mode dan Kernel Mode a geçmeden Kernel yazmaya kalkmak HTML öğrenip Facebook yapmaya benzer.
Peki nereden başlayacağım derseniz. C bilgisi olan birisi için Windows System Programming 4th Edition ( http://www.amazon.com/Windows-Programming-Addison-Wesley-Microsoft-Technology/dp/0321657748) güzel kaynaktır. Şimdiden kolay gelsin, başarılar...
söylediklerimin hepsi şahsi görüşümdür. İlgilenen arkadaşlara yol göstermek amacı taşımaktadır, kimse üzerine alınmasın.
-
İşletim sistemi yazmak için benim bildiğim kadarıyla C ve Assembly gerekiyor...
İşletim sisteminin Yüzde 90 ını C ile yapabilirsin, ama çok kritik işlemler için illakine biraz Assembly kullanılacaktır.
Daha önce TBT Forumda yazmıştım, MenuetOs diye bir işletim sistemi var...
Sitesinde şöyle yazıyor..
-----
MenuetOS is an Operating System in development for the PC written entirely in 32/64 bit assembly language.
Menuet64 is released under License and Menuet32 under GPL. Menuet supports 32/64 bit x86 assembly programming for smaller, faster and less resource hungry applications.
-----
Vatandaş sadece Asm ile yapmış işletim sistemini..
1 Diskete sığıyor..
Windows gibi pencereli sistemdi.. Benim en çok hoşuma giden ise, bir ikon o tıklanınca ikon kendi etrafında dönüyordu..
Animasyon bile var yani...
http://menuetos.net adresinden incelemeni tavsiye ederim..
En azından, neyin nasıl yapıldığına dair bilgin olur...
-
bildiğim kadarı ile bu olay c falan filan değil Assable ve makina dili denen şeyleri bilmem gerekiyor ayrıca tüm donanımları falan taraman lazım sistemini bilip onarı okutman lazım falan filan
-
dökümanlar bölümünde de vardı ama bulamadım şimdi, şunu bi incele
http://tdsoftware.wordpress.com/2011/10/27/windows-nt-kernelini-derlemek/
-
Kısa cevap: babayı yazarsın.
Uzun cevap: Bu işi yapabilecek bilgi seviyesine erişmek epey bir zaman alıyor. Öyle bir anlık gazla yapılabilecek bir şey değil. Hello World için pek birşey bilmene gerek yok ama devamını normal program yazar gibi yazacağını sanma. Gerçekten yeterli bilgi ve tecrübeye sahip olsan da tek başına birşeyler yapman pek mümkün değil özellikle günümüzdeki işletim sistemlerine bakıldığında yaptığın iş sönük kalacaktır.
-
j4x bunu yazdı:
-----------------------------Kısa cevap: babayı yazarsın.
Uzun cevap: Bu işi yapabilecek bilgi seviyesine erişmek epey bir zaman alıyor. Öyle bir anlık gazla yapılabilecek bir şey değil. Hello World için pek birşey bilmene gerek yok ama devamını normal program yazar gibi yazacağını sanma. Gerçekten yeterli bilgi ve tecrübeye sahip olsan da tek başına birşeyler yapman pek mümkün değil özellikle günümüzdeki işletim sistemlerine bakıldığında yaptığın iş sönük kalacaktır.
-----------------------------İyide benim amacım çalışma mantığını anlamak illa kendi işletim sistemini oluşturucam diye bişey değil ki neden yapılmasın :) hem ilk konuyu okumadan yazılmış bi post bu anladığım kadarıyla :)
-
SinusX bunu yazdı:
-----------------------------j4x bunu yazdı:
-----------------------------Kısa cevap: babayı yazarsın.
Uzun cevap: Bu işi yapabilecek bilgi seviyesine erişmek epey bir zaman alıyor. Öyle bir anlık gazla yapılabilecek bir şey değil. Hello World için pek birşey bilmene gerek yok ama devamını normal program yazar gibi yazacağını sanma. Gerçekten yeterli bilgi ve tecrübeye sahip olsan da tek başına birşeyler yapman pek mümkün değil özellikle günümüzdeki işletim sistemlerine bakıldığında yaptığın iş sönük kalacaktır.
-----------------------------İyide benim amacım çalışma mantığını anlamak illa kendi işletim sistemini oluşturucam diye bişey değil ki neden yapılmasın :) hem ilk konuyu okumadan yazılmış bi post bu anladığım kadarıyla :)
-----------------------------J4X ın cevabı hiç de güzel değil..
Babayı yazarsın demek ne demek ?
Sadece işin zorluğunu veya kolaylığını anlatsa yeterli..
Bu işin zorluğunu ben anlatayım az...
İşletim sistemi dediğimiz şey aynı windows gibi, bir pencere aç iki tık-tık ile bir program çalışsın değildir...
İşletim sistemin asıl önemi, arkaplanda donanımlar arasındaki organizasyonu sağlamasında yatar...
Az önce MENUET OS linkini vermiştim, orada vatandaş kullandığı klavyenin marka modelini bile yazmıştı..
Demek ki, klavyeden klavyeye fark var. Her klavyenin donanım ayarları farklı olduğu için, her klavyeye ayrı özel driver (sürücü) yazmamız gerekecek..
Her donanımın, ayrı ayrı davranışları analiz edilmeli, bu donanımlara ayrı ayrı nasıl ulaşılacağı bilinmeli...
Bunu biz zaten günümüzde yaşamıyor muyuz? Yaşıyoruz.. A markasının ABC1 modeli webcam sürücüsü ile aynı A Markasının ABC2 model webcam ını
çalıştırabiliyor muyuz? Hayır çalıştıramıyoruz. Windows illakine A Marka ABC2 model webcam driveri ister.. Aksi takdirde çalıştırmaz...
Biz burada basitçe ASM ve C ile yapabilirsin dedik.. Ama bu iş C ile ekrana basitce bir mesaj yazmak gibi değildir...
Ekrana doğrudan ulaşacaksım.. Donanım ile birebir iletişim kuracaksın...
Bir de TCP/IP gibi işlemler var mesela..
Onu da bir kütüphane ile halledersin sanıyorum :)
Aksi takdirde senin işletim sistemi bittiinde, senin işletim sistemine AKSAKALLI V 1 diyecez :)
Neyse araştırmaya devam, hem sen hem bizler çok şey öğrenecez...
-
bilgisayar veya programlamayla uğraşan/uğraşmaya başlayan herkeste açığa çıkan bir istek heralde bu kendi işletim sistemim mevzusu.
-
j4x bunu yazdı:
-----------------------------Kısa cevap: babayı yazarsın.
Uzun cevap: Bu işi yapabilecek bilgi seviyesine erişmek epey bir zaman alıyor. Öyle bir anlık gazla yapılabilecek bir şey değil. Hello World için pek birşey bilmene gerek yok ama devamını normal program yazar gibi yazacağını sanma. Gerçekten yeterli bilgi ve tecrübeye sahip olsan da tek başına birşeyler yapman pek mümkün değil özellikle günümüzdeki işletim sistemlerine bakıldığında yaptığın iş sönük kalacaktır.
-----------------------------uslubu bilmem ama içerik tamamen doğru :)
-
Tugberk bunu yazdı:
-----------------------------j4x bunu yazdı:
-----------------------------Kısa cevap: babayı yazarsın.
Uzun cevap: Bu işi yapabilecek bilgi seviyesine erişmek epey bir zaman alıyor. Öyle bir anlık gazla yapılabilecek bir şey değil. Hello World için pek birşey bilmene gerek yok ama devamını normal program yazar gibi yazacağını sanma. Gerçekten yeterli bilgi ve tecrübeye sahip olsan da tek başına birşeyler yapman pek mümkün değil özellikle günümüzdeki işletim sistemlerine bakıldığında yaptığın iş sönük kalacaktır.
-----------------------------uslubu bilmem ama içerik tamamen doğru :)
-----------------------------
Benim uzun uzun yazmaya çalıştığım şey de buydu =) arkadaş özetlemiş :D