Örneğin C ile yazılmış bir işletim sistemi donanım ile nasıl iletişim kuruyor? Kendi içinde komutlarını assembly’ye derleyen compilerlar mı mevcut? Ben bir system call yaparak os’ten herhangi bir dosya işlemi yapmasını istediğimde bu süreç nasıl ilerliyor?
Cevaplamadan once sunun arkasindaki yanlis varsayimlari bulup duzeltmemiz lazim:
Assembly bir programlama dili, derleme hedefi degil. C dilinde yazilmis programlar turlu calistirilabilir formatlara derleniyor, assembly’e degil. (Bir takim calistirilabilir dosyalarin code
veya text
kisimlari var. Bu kisimlar hedef CPU icin instruction’lar iceriyor. Bu instruction’lar ile CPU icin tasarlanmis assembly dili arasinda 1:1’e yakin bir paralellik var.)
Modern isletim sistemleri altlarindaki hardware ile ozel hafiza alanlarina yazarak/okuyarak konusuyor. Veya bunu yapan UEFI/BIOS gibi bir katmandaki fonksiyonlari cagiriyor.
OS’in bir suru katmanindan geciyor. Mesela once bakiyor dosya disk dosyasi mi, baska bir sey mi. Disk dosyasisya filesystem katmanindan bloklari isteniyor, sonra disk katmanina blok yazma cagrilari yapiliyor. Disk katmani degisiklikleri ileride kaydetmek uzere sakliyor.
Kaydetme zamani geldiginde disk surucu katmani altindaki bus katmanina (SATA, USB) diske gondermek istedigi komutu veriyor. Gerisi alttaki hardware’in sorumlulugunda.
SATA controller’i bos bir vakitte hafizanin kontrolunu ele gecirip yazmak istedigi bloklari hard disk controller’ina SATA kablosu uzerinden yolluyor. (Veya belki hard disk controller’i bir memory controller’la dogrudan konusup hafizadan okumayi kendisi yapiyordur, bilmiyorum.)
C ile yazılmış bir OS bir diske başka bir ortamda derlenmiş biçimde mi yükleniyor? Ben bir bilgisayar aldığımda işletim sistemim çoktan yazılıp derlenmiş çalıştırılabilir formatta cihazıma yüklenmiş mi oluyor? Kendisi de bir program olan işletim sistemi kaynak kod olarak yüklenip bilgisayar her açıldığında derlenip diğer programları çalıştırması beklenemez herhalde? O yüzden çoktan derlenmiş şekilde bulunuyor diyebilir miyiz?
Evet. Bir isletim sistemi indirip (Downloading Debian CD/DVD images via HTTP/FTP) icindeki calistirilabilir dosyalari inceleyebilirsiniz. Sayfada hangi CPU ailesi icin hazir derlenmis halini sececeginiz linkler mevcut.
Bir suru satici bilgisayarlari hazir isletim sistemi yuklenmis sekilde satiyor. Cogunlugu yeni bilgisayarlari Windows yuklu satmak icin para aliyor.
Hayir, niye her seferinde ayni islemi yapip vakit ve elektrik harcayalim ki? Istersek yapabiliriz tabi. Buradaki soru derleyicinin de kaynak kodundan mi derlenecegi. Derlenecekse o derleyicinin kaynak kodundan mi derlenecegi…
Buna en yakin Gentoo var, her programi kurulum esnasinda kaynak kodundan islemciye ozel olarak derliyor. Bunun icin gereken programlar ilk seferde derlenmis bir sekilde geliyor tabi.
Evet. Acik kaynakli olmayan isletim sistemlerini tanim geregi baska bir sekilde bulmak mumkun degil.