CodeBlanks Logo Icon CodeBlanks

Çekirdek nedir?

Çekirdek kavramını ve kullanıcı/çekirdek modunu öğrenirsin.

Çekirdek nedir?

Çekirdek (kernel), işletim sisteminin kalbidir; donanımı yönetir ve süreçlere hizmet sunar. C programların kullanıcı modunda (user mode) çalışır; donanıma doğrudan erişemez.

Gerektiğinde çekirdek moduna (kernel mode) geçiş yapılır. Bu geçiş sistem çağrısı (syscall) ile olur. Çekirdek, sürecin isteğini denetler ve güvenliyse yerine getirir. Bu ayrım hatalı bir programın tüm sistemi çökertmesini engeller. POSIX çekirdek arayüzü <unistd.h> başlığında bildirilir.

Mod geçişi ve trap

Kullanıcı modundan çekirdek moduna geçiş trap komutuyla olur. Süreç syscall yapınca CPU ayrıcalık seviyesini yükseltir ve çekirdek koduna atlar.

Çekirdek işi bitirince aynı komutun devamına döner. Bu geçiş maliyetlidir; bu yüzden kullanıcı alanı kitaplıkları (ör. libc) çağrıları önbelleğe alır veya gruplar. Modern x86 CPU'larda SYSCALL ve SYSRET komutları bu geçişi hızlandırır. C programcısı genellikle read, write gibi sarmalları kullanır; doğrudan syscall nadiren gerekir.

Uygulama Çekirdek modlarını yazdır

Bir enum cpu_mode tanımla: USER_MODE = 0, KERNEL_MODE = 1. printf ile her modu "USER_MODE=0" ve "KERNEL_MODE=1" biçiminde ayrı satırda yazdır.

Başlangıç kodu

main.c
#include <stdio.h>

// cpu_mode enum'unu tanımla
// her modu AD=değer biçiminde yazdır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>

enum cpu_mode { USER_MODE = 0, KERNEL_MODE = 1 };

int main(void) {
    printf("USER_MODE=%d\n", USER_MODE);
    printf("KERNEL_MODE=%d\n", KERNEL_MODE);
    return 0;
}

Beklenen çıktı

USER_MODE=0
KERNEL_MODE=1

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Hangi modda donanıma doğrudan erişilebilir?

  • Çekirdek modunda Doğru cevap
  • Kullanıcı modunda
  • Hata modunda
  • Bekleme modunda

Açıklama: Çekirdek modu donanım komutlarını doğrudan çalıştırabilir.

2 cpu_mode enum'unu tamamla

Soru
enum cpu_mode { ____ = 1 };
Cevap
enum cpu_mode { KERNEL_MODE = 1 };

Açıklama: KERNEL_MODE ayrıcalıklı modu belirtir.

3 Çekirdek kavramlarını eşle

Kavram Anlamı
user_mode Uygulama modu
kernel_mode Çekirdek modu
trap Mod geçiş komutu
syscall Çekirdek hızmeti talebi

Uzman bölümündeki tüm dersler