İşletim sistemleri nasıl yazılıyor?

Mr.Durgut

Decapat
Katılım
29 Ağustos 2019
Mesajlar
197
Merhaba sadece meraktan soruyorum; işletim sistemi yapmak gibi hayallerim yok, işletim sistemleri yapılırken nasıl yapılıyor, hangi diller kullanılıyor, hangi derleyiciler kullanılıyor?
 
Merhaba sadece meraktan soruyorum; işletim sistemi yapmak gibi hayallerim yok, işletim sistemleri yapılırken nasıl yapılıyor, hangi diller kullanılıyor, hangi derleyiciler kullanılıyor?
Windows 8'de tam 35 Microsoft ekibi çalışmış. Bu ekipler 25-40 kişilik ekiplerdir. Çarptığın zaman ortaya 875 – 1400 kişilik bir grup çıkıyor. Bu 35 ekip:

App Compatibility and Device Compatibility
App Store
Applications and Media Experience
App Experience
Core Experience Evolved
Device Connectivity
Devices & Networking Experience
Ecosystem Fundamentals
Engineer Desktop
Engineering System
Enterprise Networking
Global Experience
Graphics Platform
Hardware Developer Experience
Human Interaction Platform
Hyper-V
In Control of Your PC
Kernel Platform
Licensing and Deployment
Media Platform
Networking Core
Performance
Presentation and Composition
Reliability, Security, and Privacy
Runtime Experience
Search, View, and Command
Security & Identity
Storage & Files Systems
Sustained Engineering
Telemetry
User-Centered Experience
Windows Online
Windows Update
Wireless and Networking services
XAML
Bölümlerinde çalışıyorlar ve Windows 8 meydana getiriliyor... Yani çok uzun uğraşlar.
 
İşlemci nasıl çalışır? Bir transistorun açık olup olmaması, NAND yongalarda nasıl verinin okunduğu. Beynimin almayacağı şeyler.
 
Windows 8'de tam 35 Microsoft ekibi çalışmış. Bu ekipler 25-40 kişilik ekiplerdir. Çarptığın zaman ortaya 875 – 1400 kişilik bir grup çıkıyor. Bu 35 ekip:

App Compatibility and Device Compatibility
App Store
Applications and Media Experience
App Experience
Core Experience Evolved
Device Connectivity
Devices & Networking Experience
Ecosystem Fundamentals
Engineer Desktop
Engineering System
Enterprise Networking
Global Experience
Graphics Platform
Hardware Developer Experience
Human Interaction Platform
Hyper-V
In Control of Your PC
Kernel Platform
Licensing and Deployment
Media Platform
Networking Core
Performance
Presentation and Composition
Reliability, Security, and Privacy
Runtime Experience
Search, View, and Command
Security & Identity
Storage & Files Systems
Sustained Engineering
Telemetry
User-Centered Experience
Windows Online
Windows Update
Wireless and Networking services
XAML
Bölümlerinde çalışıyorlar ve Windows 8 meydana getiriliyor... Yani çok uzun uğraşlar.
Nasıl yapıldığı sorulmuş. Kimler veya kimlerle yapıldığı değil.
 
Önce "kernel" yazılıyor, sonra o çekirdeğin üzerine işletim sistemi inşa ediliyor. Kısaca böyle.
@ferhatgec hocam izah edebilir misiniz?
 
Isletim sistemini ufak parcalarin birlestirilmesi gibi dusunebilirsin.
Calisan programlarin yonetilmesi ( Process management )
RAM ve Virtual RAM yonetilmesi ( Memory management )
Ag ile ilgili yapilandirmalar ( Network management )
BIOS ile iletisim kurulup donanimin interruptlarini islemesi ( Interrupt Management )
Disk ve dosya yonetimi ( NTFS, EXT4 vs )
Cron Management ( Zamanlanmis gorevler )
Driver yonetimi ( Isletim sistemi tum donanimlari nasil kullanacagini bilmez, "driver" bu isi yapiyor )
Kernel temelde bunlari yapiyor ve isletim sisteminin cekirdegini olusturur. Bunlari yapmadan isletim sistemi yazamazsin. Bunlari yaptiktan sonra:

Guvenlik
GUI
Kullanici Yonetimi
Update
Calisacak Program seti ( ornegin mp3 dosyalarini hangi program calistiracak, Paint ya da notepad gibi utility programlar vs ) yazilir.

Tahmin edebilecegin uzere bir suru farkli sey daha var saymadigim. Ornegin bilgisayari "uyku" moduna aldiginda RAM'deki her seyi diske yazar, sonra uyandiginda yeniden RAM'e yukler. Bu bile basli basina bir proje olur.

Ayrica RAM de fazla yer tutmamasi icin RAM'deki verilerin compress edilmesi vs gibi bir suru ivir zivir isler.

Low level diller kullanilir. C, C++, Assembly gibi.

Windows'ta aldiginiz mavi ekranlar aslinda ustte saydigim temel ozelliklerle ilintilidir genelde. Ornegin Memory Management ya da IRQL_NOT_LESS_EQUAL ya da interrupt_exception_not_handled ya da herhangi bir driver ile ilgili.

Ayni anda onlarca program calisir, hepsi islemci zamani talep eder fakat bunlari isletim sistemi duruma gore karsilar.

Bu konuyu genelde "Dining Philosophers Problem" diye islerler CS derslerinde.

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

Ayrica her isletim sistemi icin bunlari sifirdan yeniden yazmazlar. Kernel buyuk oranda degismez. Driver destegi artar. Windows'da bazi menulerin Windows98 den beri degismemesinin sebebi de budur.
 
Önce "kernel" yazılıyor, sonra o çekirdeğin üzerine işletim sistemi inşa ediliyor. Kısaca böyle.
@ferhatgec 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.
 
Şu harfler yan yana gelecek:
İ-Ş-L-E-T-İ-M (araya boşluk) S-İ-S-T-E-M-İ
Ciddi olursak da hangi mimariye çalıştığımızı ve sürücüleri nasıl kuracağımızı bilmeliyiz öncelikle, sonra detaylanıyor fakat arkadaşlar anlatmışlar zaten.
 
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.

Geri
Yukarı