C, işletim sistemi geliştirmek için kullanılan en kritik dildir. Linux, Windows’un çekirdek bölümleri, macOS’un temel sistemleri ve gömülü işletim sistemlerinin çoğu C ile yazılmıştır. Bunun nedeni, C’nin hem düşük seviyeye erişebilmesi hem de donanıma yakın çalışabilmesidir.
1. Kernel (Çekirdek) Mantığı
Kernel = Donanım ile uygulamalar arasındaki kontrol merkezi.
C burada doğrudan:
-
Bellek yönetimi
Bunu da okuyun
C++ ve Rust ile WebAssembly -
Process yönetimi
-
Donanım sürücüleri
-
Sistem çağrıları (system calls)
-
Scheduler
-
I/O yönetimi
gibi en kritik işleri yönetir.
Basit bir kernel entry noktası örneği:
Çoğu mikro kernel veya monolitik kernel mimarisi bu tarz bir entry bloğuyla başlar.
2. Process ve Thread Yönetimi
İşletim sistemi, process’leri oluşturmak ve yönetmek için C ile yazılmış fonksiyonlar kullanır.
POSIX process oluşturma:
Bu örnek neyi temsil eder?
-
Linux’ta yeni bir process hep
fork()ile çoğaltılır. -
Kernel bunu copy-on-write mantığıyla güvenli hâle getirir.
3. Bellek Yönetimi (Memory Management)
C, işletim sisteminin bellek yönetimini doğrudan kontrol edebilmesi için ideal dildir.
Bellek bölgeleri:
-
Stack: Fonksiyon değişkenleri
-
Heap: malloc/free ile yönetilen alan
-
Text: Kod bölümü
-
Data/BSS: Global değişkenler
Basit heap allocation:
İşletim sistemleri RAM’i yönetmek için:
-
Paging
-
Virtual memory
-
Memory segmentation
gibi düşük seviye teknikleri kullanır.
4. System Call (Sistem Çağrıları)
Kullanıcı programları kernel’e C üzerinden system call yapar.
Linux’ta temel örnek:
Aslında kernel buna karşı CPU’da bir interrupt tetikler:int 0x80 (eski), syscall (yeni)
5. Scheduler (Görev Zamanlayıcı)
İşletim sistemi hangi process’in ne zaman çalışacağına karar verir.
Bu mekanizma C ile yazılmıştır.
Temel algoritmalar:
-
Round Robin
-
Priority Scheduling
-
Completely Fair Scheduler (Linux’ta CFS)
-
Multilevel Queue Scheduling
Neden C?
Çünkü scheduler CPU’ya en yakın noktada çalışır ve yüksek performans gerektirir.
6. Dosya Sistemi — File I/O
C, işletim sistemi dosya sistemi API’lerinin temel dilidir.
Basit okumayazma:
Arka planda kernel:
-
Disk sürücüsü
-
Buffer cache
-
I/O scheduler
-
Permission kontrolü
gibi katmanları kullanır.
7. Interrupt Handling (Kesme Yönetimi)
Donanım sinyal gönderir → CPU interrupt tetikler → kernel C kodunu çalıştırır.
Örnek pseudo interrupt handler:
Bu mekanizma sayesinde:
-
Klavye basışı
-
Mouse hareketi
-
Disk işlemi
-
Network paketleri
işlenir.
8. Mini OS Örneği (Gerçekçi Basit Yapı)
Aşağıdaki, bare-metal yazılmış en küçük işletim sistemi çekirdeği örnek yapısı:
Bu yapı gerçek bir işletim sistemi iskeletinin %10’unun sadeleştirilmiş hâlidir.
9. İşletim Sistemi Geliştirmek İçin C Neden En İyi Dil?
-
Pointer yönetimi donanım seviyesinde
-
Hızlı, hafif, derlenmiş
-
Kernel modunda kullanılabilir
-
Bellek, register, CPU kontrolüne erişebilir
-
Minimal runtime → OS için ideal
Bu yüzden Linux kernel’in %96’sı hâlen C’dir.
Bir Cevap Yaz
E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir.