Struktura kurzu
Course Introduction
Kernel Overview
Kernel vs. user mode execution and privilege levels
Virtual memory management and address space separation
Process scheduling and context switching
System call interface and syscall flow from user → kernel → user
Monolithic vs. microkernel architecture concepts and Linux’s hybrid approach
Kernel Module Overview
Kernel modules defined as loadable units of kernel functionality
Typical use cases: drivers, filesystems, network stack components, instrumentation
Benefits of modules: flexibility, reduced kernel size, dynamic updates
Risks and security concerns: kernel trust, module signing, tainting
Module lifecycle: loading, running, unloading, debugging
Building a Kernel Module
Structure of a basic module: init, exit, exported symbols
Writing a Makefile and using Linux’s module build system (Kbuild)
Using module utilities: insmod, rmmod, modprobe, lsmod
Using dmesg and kernel logs for debugging and validation
Understanding kernel headers and version compatibility
Interacting with a Kernel Module
User-space to kernel-space communication strategies
Using procfs for simple reporting, parameter passing and text-based interfaces
Using sysfs attribute files for structured configuration and control
Implementing ioctl interfaces for richer binary/structured interactions
Character devices and miscdevice as common pathways for module I/O