Návrh Školení

Zavedení

  • rychlá historie GNU/Linux
  • udělování licencí
  • verzování jádra
  • cyklus uvolňování
  • jádrové stromy
  • hlavní linie
  • jádro vs. uživatelský prostor
  • mechanismus vs. politika
  • alternativy ovladače jádra
  • RTOS vs. Linux

Paměť Management

  • Virtuální paměť versus fyzická paměť
  • alokace paměti v jádře
  • stránky
  • zóny
  • API
  • deska

Patch jádra

  • životní cyklus
  • git
  • zdroj jádra
  • vytvořit patch
  • zkontrolovat patch
  • opravit patch
  • lodní záplata
  • auditovaný kód

Moduly jádra

  • získat zdrojové kódy jádra
  • konfigurovat/sestavit/instalovat
  • ovladače zařízení (staticky propojené, načtené za běhu)
  • init/exit
  • udělování licencí
  • SYMBOL EXPORTU GPL
  • mimo strom makefile
  • modul-init-tools
  • modulu ve stromu jádra
  • Kconfig
  • předávání parametrů
  • řídký

Ovladače Char

  • architektura
  • uživatelské/kernel rozhraní
  • I/O subsystém
  • VFS
  • sysfs (zařízení, autobus, ovladače, třídy),
  • kobject/ktype/kset
  • model ovladače pro linuxové jádro
  • soubory zařízení
  • char řidič
    • inicializace
    • registrace
    • otevřít, uvolnit
    • cdev, cdev přidat, cdev del,...
    • hlavní/vedlejší čísla
    • udev, udevmonitor, udevadm

Pokročilé operace ovladače Charachter

  • ioctl
  • odemčený ioctl
  • kompatibilní ioctl
  • API uživatelského prostoru
  • kernel space API
  • životní cyklus procesu
  • spánek/blokování
  • spaní/probuzení
  • čekací fronta
  • hřmící stádo
  • anketa/výběr

Ladění jádra

  • chyba
  • ladění
  • ladění jádra
    • binární vyhledávání pomocí git
    • podpora ladění z jádra
    • printk syslogd, klogd, loglevels, rate limit, debug level, debug selective subsystems
    • ladění dotazem debugfs
    • oops ladění, tvrzení oops
    • Magický klíč SysRq
    • kgdb/kdb
    • JTAG

Sledování

  • gcov
  • lcov
  • profil
  • ftrace
    • nop tracer
    • sledovač funkcí
    • sched switch tracer
    • sledovač funkčních grafů
    • dynamický tracer
  • trace-cmd/kernelshark
  • výkon
  • LTTng

Přerušuje

  • přerušení vs. dotazování
  • přerušit
  • programové sekce
  • opětovného vstupu
  • události
  • obsluha přerušení
  • sdílená obsluha přerušení
  • přerušit tok
  • ovládání přerušení

Odložení práce

  • horní/spodní poloviny
  • softirqs
  • úkoly
  • pracovní fronty
  • závitová přerušení

Souběžnost

  • kritická oblast/úsek
  • atomový
  • závodní podmínky
  • synchronizace
  • zamykání
  • řešení zamykání
  • uváznutí
  • tvrzení
  • co zamknout?
  • co se dá použít?
    • atomové operace
    • otočné zámky
    • otočné zámky čtenář-zapisovač
    • semafor
    • binární semafor
    • mutex
    • semafor čtenář-spisovatel
    • proměnné dokončení
    • sekvenční zámky
    • zakázat preempci
    • pořádek a překážky

Čas

  • HZ
  • Jiffies
  • velká/malá zpoždění
  • časovače jádra

Hardware I/O

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

Uživatelské jádro Communication

  • put(get)_user()
  • zkopírovat do (from)_user()
  • I/O jádra
  • mapování paměti
  • profs
  • sysfs
  • debugfs
  • reléfs
  • netlink
  • ioctl

Přenosnost

  • velikost slova
  • neprůhledné typy
  • podepsaný/nepodepsaný char
  • zarovnání dat
  • integrální propagace
  • opětovné použití kódu
  • endianess
  • systémové klíště
  • velikost stránky
  • objednávání instrukcí
  • SMP/preempce/vysoká paměť

Pokud není uvedeno jinak, obsah a tato osnova kurzu podléhají licenci Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).

Požadavky

  • Základní znalost používání systému GNU/Linux jako koncového uživatele
  • Základní znalost prostředí příkazového řádku
  • Základní znalost uživatelského prostoru / vývoje aplikací
  • Středně pokročilá znalost programování v C
  • Měli jste se již dříve zúčastnit Embedded GNU/Linux Systems Architecture (důrazně doporučujeme!) a/nebo dobře rozumět tématům, která jsou zde uvedena
 35 hodiny

Počet účastníků


Price per participant

Reference (5)

Upcoming Courses

Související kategorie