Önce "kernel" yazılıyor, sonra o çekirdeğin üzerine işletim sistemi inşa ediliyor. Kısaca böyle.
@112163 hocam izah edebilir misiniz?
Bir işletim sisteminin yazılması için, öncelikle bilgisayarı ve işleyiş yapısını iyi bilmek gerekir. Bir işletim sisteminin birden çok bölümü bulunur ve çekirdekler işleyiş yapılarına göre sınıflandırırlar.
Örnek olarak: (Monolotik, Femonolitic, Hybrid, Mikrokernel vb.)
İşletim sistemlerinin belirli işlemcileri ve mimarileri desteklemesi gerekir.
Örnek mimariler: AMD64, X86_64, IA32, ARM(32/64), SPARC, PPC gibi gibi örnek verilebilir)
Mimari geliştirmek için belirli dokümantasyonlardan yararlanılır, çoğunlukla GitHub ya da Bitbucket gibi sitelerde örneklerini bulabilirsiniz.
Sürücü nasıl yazılır?
Öncelikle sürücü yazmak direk olarak mantıkla yapılabilir bir şey değil, öncelikle belirli örneğin C ve C++ gibi dillerin dahili olarak birkaç destegi vardır.
Örneğin osdev'e katılırken sorulan sorulardan birisi:
Ekrana yazdırma için kullanılan video belleği adresi nedir?
- Cevap 0xB8000
Kaynağı ise şuradan ulaşılabilir:
Printing To Screen - OSDev Wiki
Ayrıca #define içinde tanımlanan 0x33 de bir PS/2 tıklama sinyali adresidir.
İşletim sistemini inşa etmek için bazı paketlere ihtiyacınız olacak.
Örnek:
SCons
Perforce Jam
Ninja
Meson
Peki bunların dosyaları?
Örnek.Makefile dosyası ile inşa edebilirsin,
Örnek: Jamfile dosyası ile de.
GUI konusuna gelecek olur isek.
Bir işletim sisteminde ekranda bir takım parametreleri yazdırmak isteyebilirsiniz, X Pencere sistemini kullanmak isteyebilirsiniz.
Bunun için video bellegi adresini kullanın, sürücü alanında ise örneğin VESA sürücüsünü kullanın.
Cursor en basit şekilde nasıl yapılabilir?
- PS/2 ya da USB(xhci, ehci vb...) sürücülerini desteklemelisiniz.
Ondan sonra farenin X ve Y değerlerini her hareket ettiği piksel kadar değerini tanımlamalısınız, ayrıca CLI olarak da bir cursor yapabilirsiniz, hepsi Osdev de mevcut
CLI(Command Line Interface)
- GUI sevmeyen komut satırı sevenleriniz vardır, MS-DOS sevenleriniz vardır.
En zahmetsiz şekilde CLI şeklinde yapabilirsiniz, GUI'dan daha kolaylık ile yapılabilir.
BSD, Linux şuanda CLI kullanıyor ve bunlar bir kernel.
Yazım şuanlık bu kadar.