Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
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