Skip to content

Jak funguje Linux kernel a jeho komponenty #64

Description

@zapotocnylubos

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions