Özet - Çekirdek temelleri
- C kursu
- Uzman
- Ders 6/47
- 5 dk
syscall ve ioctl'i birleştirerek bir sistem bilgi aracı yazarsın.
Özet - Çekirdek temelleri
Bu grupta çekirdek ile kullanıcı programı arasındaki sınırı öğrendin: mod geçişi, sistem çağrısı, ioctl ile cihaz kontrolü, /proc sanal dosya sistemi ve dmesg ile loglar.
Çekirdek hizmetleri hep numaralı syscall'larla çağrılır. Cihazlar ioctl komutlarıyla denetlenir; /proc durumu metin olarak sunar; dmesg log arabelleğini gösterir. Bir sonraki derste beş kavramı birleştiren bir mini görev yapacaksın. Hazırsan kod adımına geç.
Uygulama Çekirdek bilgilerini yazdır
void print_kernel_info(const char *topic, const char *detail) fonksiyonunu tanımla; gövdesi printf("%s -> %s\n", topic, detail); olsun. main içinde beş konu için çağır: ("kernel", "mode"), ("syscall", "trap"), ("ioctl", "device"), ("proc", "vfs"), ("dmesg", "log").
Başlangıç kodu
#include <stdio.h>
// print_kernel_info fonksiyonunu tanımla
// beş konuyu yazdır: kernel, syscall, ioctl, proc, dmesg
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
void print_kernel_info(const char *topic, const char *detail) {
printf("%s -> %s\n", topic, detail);
}
int main(void) {
print_kernel_info("kernel", "mode");
print_kernel_info("syscall", "trap");
print_kernel_info("ioctl", "device");
print_kernel_info("proc", "vfs");
print_kernel_info("dmesg", "log");
return 0;
}Beklenen çıktı
kernel -> mode syscall -> trap ioctl -> device proc -> vfs dmesg -> log
Sırada ne var?
Tebrikler! Çekirdek temellerini tamamladın. Artık kullanıcı programının çekirdeğe nasıl eriştiğini biliyorsun: syscall ile hizmet iste, ioctl ile cihaz kontrol et, /proc ile bilgi oku, dmesg ile logları izle.
Bir sonraki grupta sürücü temellerine geçeceksin: çekirdek modülü yükleme, printk ile log yazma, dev_t ile cihaz numarası ve file_operations yapısı. Orada öğrendiklerin bu grubun üzerine eklenir. Hazır olduğunda devam et.
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Cihaza özel komut göndermek için hangisi kullanılır?
- printf
- ioctl Doğru cevap
- malloc
- fopen
Açıklama: ioctl cihaza özel komutları iletir.
2 Beş kavramı eşle
| Kavram | Anlamı |
|---|---|
kernel |
Korunan çekirdek |
syscall |
Numaralı hizmet |
ioctl |
Cihaz komutu |
proc |
Sanal dosya sistemi |
dmesg |
Log arabelleği |