Çekirdek nedir?
- C kursu
- Uzman
- Ders 1/47
- 5 dk
Ç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
#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
#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
enum cpu_mode { ____ = 1 };
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 |