C ile İşletim Sistemi Temelleri Kernel Process Memory ve I/O Mantığı

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

Google News Google News Flipboard Flipboard Sesli oku Yazıyı beğen Favorilere Ekle 0 Yorumlar
Daha fazla

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:

gibi en kritik işleri yönetir.

Basit bir kernel entry noktası örneği:

void kernel_main() {
// Basit bir bare-metal kernel başlangıcı
while (1) {}
}

Ç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:

pid_t pid = fork();
if (pid == 0) {
printf("Child process\n");
} else {
printf("Parent process\n");
}

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:

int *p = malloc(sizeof(int) * 10);
free(p);

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

#include <unistd.h>

write(1, "Merhaba\n", 8);

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:

FILE *f = fopen("deneme.txt", "w");
fprintf(f, "Hello OS");
fclose(f);

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:

void keyboard_interrupt_handler() {
char c = read_keyboard_port();
buffer[buf_idx++] = c;
}

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ı:

// boot.asm -> C fonksiyonuna geçiş yapar
extern void kernel_main();

// kernel.c
void kernel_main() {
print("OS Booting...");
init_memory();
init_interrupts();
init_scheduler();

while(1) {
schedule();
}
}

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.

Yazar Hakkında

Benzer Yazılar

Bir Cevap Yaz

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir.

0/30 karakter