Návrh Školení

Úvod

    rychlá historie licencování GNU/Linux licencování verzování jádra cyklus vydávání stromů jádra jádro vs. mechanismus uživatelského prostoru vs. politika alternativy ovladače jádra RTOS vs. Linux

Paměť Management

    Alokace virtuální paměti vs. fyzická paměť v zónách stránek jádra API slab

Patch jádra

    life cycle git kernel source create patch check patch fix patch ship patch audited code

Moduly jádra

    získat zdroje jádra konfigurace/sestavení/instalace ovladačů zařízení (staticky propojené, načtené za běhu) licencování init/exit EXPORT SYMBOL GPL mimo strom makefile module-init-tools modul ve stromu jádra Parametr Kconfig předávání sparse

Ovladače Char

    architektura uživatelské/rozhraní jádra I/O subsystém VFS sysfs (zařízení, sběrnice, ovladače, třídy), kobject/ktype/kset linuxové jádro model ovladače soubory zařízení char inicializace ovladače registrace otevřena, vydání cdev, cdev add, cdev del,... hlavní/moll čísla udev, udevmonitor, udevadm

Pokročilé operace ovladače Charachter

    ioctl odemčený ioctl compat ioctl uživatelský prostor API jádrový prostor API životní cyklus procesu spánek/blokování spánek/probuzení fronta čekání hřímající stádo hlasování/výběr

Ladění jádra

    ladění chyb ladění binárního vyhledávání jádra s podporou ladění git z jádra printk syslogd, klogd, loglevels, rychlostní limit, úrovně ladění, ladění selektivních subsystémů ladění dotazem debugfs oops ladění, tvrzení oops Magic SysRq Klíč kgdb/kdb JTAG

Sledování

    gcov lcov oprofile ftrace nop tracer funkce tracer sched switch tracer funkce graf tracer dynamický tracer
trace-cmd/kernelshark
  • výkon
  • LTTng
  • Přerušuje
  • přerušení vs. přerušení dotazování programové sekce reentrancy události obsluha přerušení sdílená obsluha přerušení tok přerušení řízení přerušení

      Odložení práce

    horní/spodní poloviny softirqs tasklets pracovní fronty vláknová přerušení

      Konkurence

    kritická oblast/sekce atomový závod synchronizace zamykání řešení zamykání uváznutí spor co zamknout? co se dá použít? atomové operace otočné zámky čtečka-zapisovač otočné zámky semafor binární semafor mutex čtečka-zapisovač semafor dokončovací proměnné sekvenční zámky zakázat preempci pořadí a bariéry

      Čas

    HZ Jiffies velké/malé zpoždění jaderných časovačů

      Hardware I/O

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

      Uživatelské jádro Communication

    put(get)_user() copy to(from)_user() Mapování I/O paměti jádra procfs sysfs debugfs relayfs netlink ioctl

      Přenosnost

    velikost slova neprůhledné typy podepsaný/nepodepsaný znak zarovnání dat integrální propagační kód opětovné použití endianess systém zaškrtnutí velikosti stránky instrukce objednávání SMP/preemption/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 dříve navštěvovat 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ů


    Začátek

    Konec


    Dates are subject to availability and take place between 09:30 and 16:30.
    Open Training Courses require 5+ participants.

    Reference (3)

    Související kurzy

    The Yocto Project - An Overview - hands-on

      28 hodiny

    Související kategorie