Ö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?

Nasıl yapıldığı sorulmuş. Kimler veya kimlerle yapıldığı değil.

Adam sorduğuna soracağına pişman olacak

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?

Isletim sistemini ufak parcalarin birlestirilmesi gibi dusunebilirsin. Calisan programlarin yonetilmesi RAM ve Virtual RAM yonetilmesi Ag ile ilgili yapilandirmalar BIOS ile iletisim kurulup donanimin interruptlarini islemesi Disk ve dosya yonetimi ( NTFS, EXT4 vs ) Cron Management Driver yonetimi 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. Üçüncü taraf çerezlerini kabul et 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.

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: İş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 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 - 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.

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.

Şu harfler yan yana gelecek: İ-Ş-L-E-T-İ-M 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.

İşlemci nasıl çalışır? Bir transistorun açık olup olmaması, NAND yongalarda nasıl verinin okunduğu. Beynimin almayacağı şeyler.