Děkujeme za vaši dotaz! Jeden z našich pracovníků vás brzy kontaktuje.
Děkujeme za rezervaci! Jeden z našich pracovníků vás brzy kontaktuje.
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
Reference (3)
Všechno je v pořádku.
Adrian Rybka - SEOyon
Kurz - Flutter Development Bootcamp with Dart
Přeloženo strojem
Velmi užitečné dodatečné informace
Grzegorz - Comp S.A.
Kurz - BLoC Pattern
Přeloženo strojem
Prezentace a způsob komunikace školenáře.
Gianpiero Arico - Urmet Spa
Kurz - Embedded Linux Systems Architecture
Přeloženo strojem