CodeBlanks Logo Icon CodeBlanks

Özet - Çekirdek temelleri

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

main.c
#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

main.c
#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

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