1. Architektura kernelu
Základ pro pochopení všeho ostatního – jak je kernel strukturovaný jako celek.
- Monolitický kernel vs mikrokernel – design rozhodnutí, trade-offy
- Subsystémy kernelu – přehled a vztahy mezi nimi
- Kernel modules – dynamické načítání ovladačů,
insmod, lsmod, modprobe
- Kernel build systém – jak se kernel kompiluje, Kconfig
- 🔢 Příklad: načtení a odebrání jednoduchého kernel modulu
2. Kernel/Userspace přechody do hloubky
Hlubší pohled na hranici – staví na znalosti syscallů.
- Syscall tabulka – jak kernel mapuje čísla na handlery
- vDSO – proč
gettimeofday() nevyžaduje přechod do kernelu
- Kernel stack vs user stack – každý proces má dva zásobníky
- 🔢 Příklad: sledování syscallů reálného programu pomocí
strace, měření overhead přechodu
3. Device Drivers
Jak kernel komunikuje s hardwarem.
- Driver model –
struct device, struct driver, device tree
- Typy ovladačů – char, block, network – rozdíly a použití
- Interrupt handlery – top half vs bottom half (softirq, tasklet, workqueue)
- DMA – přímý přístup do paměti bez CPU
- 🔢 Příklad: jednoduchý char driver – registrace, otevření, čtení, zápis
4. Síťový stack
Cesta paketu kernelem – od NIC po userspace socket.
- Příjem paketu – NIC → DMA → ring buffer → NAPI
- Zpracování v kernelu – L2, L3, L4 vrstvy
- Netfilter – kde a jak iptables/nftables zachytávají pakety
- Socket API – jak userspace čte data ze síťového stacku
- 🔢 Příklad: sledování cesty paketu pomocí
tcpdump a netfilter hooks
5. Block layer
Vrstva mezi VFS a fyzickým diskem – studenti znají VFS, tohle je co je pod ní.
- Block layer architektura – bio, request queue
- I/O scheduler – jak kernel řadí požadavky na disk (mq-deadline, bfq)
- Page cache a dirty pages – kdy se data skutečně zapíší na disk
- Direct I/O vs buffered I/O
- 🔢 Příklad: sledování I/O požadavků pomocí
blktrace
6. Kernel alokátory
Jak kernel sám spravuje paměť – hlubší než user-space správa.
- Buddy allocator – správa fyzických stránek, fragmentace
- Slab allocator – efektivní alokace malých objektů, cache reuse
- vmalloc vs kmalloc – kdy co použít
- 🔢 Příklad: sledování využití slab cache pomocí
/proc/slabinfo
7. Synchronizace v kernelu do hloubky
Nad rámec mutexů a spinlocků které studenti znají.
- Atomic operace – základ všeho ostatního
- RCU (Read-Copy-Update) – lock-free čtení sdílených dat
- Seqlock – optimalizace pro časté čtení, vzácný zápis
- Memory bariéry – proč pořadí paměťových operací není garantováno
- 🔢 Příklad: porovnání výkonu RCU vs mutex na konkrétním scénáři
1. Architektura kernelu
Základ pro pochopení všeho ostatního – jak je kernel strukturovaný jako celek.
insmod,lsmod,modprobe2. Kernel/Userspace přechody do hloubky
Hlubší pohled na hranici – staví na znalosti syscallů.
gettimeofday()nevyžaduje přechod do kernelustrace, měření overhead přechodu3. Device Drivers
Jak kernel komunikuje s hardwarem.
struct device,struct driver, device tree4. Síťový stack
Cesta paketu kernelem – od NIC po userspace socket.
tcpdumpanetfilterhooks5. Block layer
Vrstva mezi VFS a fyzickým diskem – studenti znají VFS, tohle je co je pod ní.
blktrace6. Kernel alokátory
Jak kernel sám spravuje paměť – hlubší než user-space správa.
/proc/slabinfo7. Synchronizace v kernelu do hloubky
Nad rámec mutexů a spinlocků které studenti znají.