Zkuste nás kontaktovat

Návrh Školení

Úvod

  • rychlá historie GNU/Linuxu
  • licencování
  • verze jádra
  • cyklus vydání
  • stromy jádra
  • hlavní větev (mainline)
  • jádro vs. prostor uživatele
  • mechanismus vs. politika
  • alternativy ovladačů jádra
  • RTOS vs. Linux

Správa paměti

  • virtuální paměť vs. fyzická paměť
  • alokace paměti v jádře
  • stránky
  • zóny
  • API
  • slab

Záplaty jádra

  • životní cyklus
  • git
  • zdrojové kódy jádra
  • vytvoření záplaty
  • kontrola záplaty
  • oprava záplaty
  • vyslání záplaty
  • audited code (ověřený kód)

Moduly jádra

  • získání zdrojových kódů jádra
  • konzultace/kompilace/instalace
  • ovladače zařízení (staticky linkované, načítané za běhu)
  • init/exit
  • licencování
  • EXPORT_SYMBOL GPL
  • makefile mimo strom jádra
  • module-init-tools
  • modul ve stromu jádra
  • Kconfig
  • předávání parametrů
  • sparse

Ovladače znakových zařízení

  • architektura
  • rozhraní mezi uživatelem a jádrem
  • podsystém I/O
  • VFS
  • sysfs (zařízení, sběrnice, ovladače, třídy),
  • kobject/ktype/kset
  • model ovladačů linuxového jádra
  • soubory zařízení
  • ovladač znakového zařízení

    • inicializace
    • registrace
    • otevření, uzavření
    • cdev, cdev_add, cdev_del,...
    • hlavní a vedlejší čísla
    • udev, udevmonitor, udevadm

Pokročilé operace ovladačů znakových zařízení

  • ioctl
  • unlocked ioctl
  • compat ioctl
  • API prostoru uživatele
  • API prostoru jádra
  • životní cyklus procesu
  • uspání/blokování
  • uspání/probuzení
  • fronta čekání (wait queue)
  • problém "bouře slonů" (thundering herd)
  • poll/select

Ladění jádra

  • ladění
  • ladění jádra

    • dvojitý binární prohledávání s použitím git
    • podpora ladění od jádra
    • printk syslogd, klogd, úrovně logů, omezení frekvence, úrovně ladění, selektivní ladění subsystémů
    • ladění dotováním do debugfs
    • ladění pádů (oops), vyvolání pádu
    • Magic SysRq Key
    • kgdb/kdb
    • JTAG

Sledování (Tracing)

  • gcov
  • lcov
  • oprofile
  • ftrace

    • nop tracer
    • function tracer
    • sched switch tracer
    • function graph tracer
    • dynamic tracer
  • trace-cmd/kernelshark
  • perf
  • LTTng

Přerušení

  • přerušení vs. dotazování (polling)
  • přerušení
  • sekvence programů
  • reenterance
  • události
  • obslužná rutina přerušení
  • sdílená obslužná rutina přerušení
  • tok přerušení
  • řízení přerušení

Oddálené práce

  • horní/dolní poloviny
  • softirqs
  • tasklets
  • fronty prací (work queues)
  • threaded interrupts

Konkurence

  • kritická oblast/sekce
  • atomické operace
  • soubojová podmínka (race condition)
  • synchronizace
  • zamykání
  • řešení zamykání
  • mrtvá záhada (deadlock)
  • konkurence (contention)
  • co uzamknout?
  • co lze použít?

    • atomické operace
    • spin zámky
    • čtenářsko-zapisovačské spin zámky
    • semafory
    • binární semafory
    • mutexy
    • čtenářsko-zapisovačské semafory
    • proměnné dokončení
    • sekvenční zámky
    • vypnutí preemptivity
    • řazení a bariéry

Čas

  • HZ
  • Jiffies
  • velké/malé prodlevy
  • timer jádra

Hardwarové I/O

  • I/O porty
  • I/O paměť
  • Jak nakládat se vedlejšími účinky při přístupu k registrům?

Komunikace mezi uživatelem a jádrem

  • put(get)_user()
  • copy to(from)_user()
  • Jádrové I/O
  • mapování paměti
  • procfs
  • sysfs
  • debugfs
  • relayfs
  • netlink
  • ioctl

Přenositelnost

  • velikost slova
  • neprůhledné typy
  • signed/unsigned char
  • zarovnání dat
  • promoce celočíselných typů
  • znovupoužití kódu
  • konecita (endianess)
  • systémový tik
  • velikost stránky
  • řazení instrukcí
  • SMP/preemptivita/vysoká paměť

Pokud není uvedeno jinak, obsah a tento osnovu kurzu jsou licencovány pod CC BY-NC-SA 4.0 International (Attribution-NonCommercial-ShareAlike 4.0).

Požadavky

  • Základní znalost používání systému GNU/Linux jako koncový uživatel
  • Základní znalost příkazového řádku (shellu)
  • Základní znalosti vývoje v prostoru uživatele (user space) / aplikací
  • Středně pokročilé znalosti programování v jazyce C
  • Doporučuje se absolvovat kurz Architektura vnořených systémů GNU/Linuxu dříve (důrazně doporučeno) a/nebo mít dobré pochopení témat zde uvedených
 35 Hodiny

Počet účastníků


Cena za účastníka

Reference (3)

Nadcházející kurzy

Související kategorie