PB173 - Tématicky zaměřený vývoj aplikací v jazyce C/C++ - Linux
Skupina Systémové programování Linux je zaměřena na programování v prostředí systému GNU/Linux. Na praktických příkladech bude probráno základní aplikační programové rozhraní jádra Linux (soubory, procesy, vlákna, prostředky IPC) a některé základní aplikační knihovny (libpcap, libdbus). Předpokládá se základní znalost jazyka C, znalost prostředí systému GNU/Linux alespoň na uživatelské úrovni a zájem o oblast.
| |
JELÍNEK, Lukáš, Jádro systému Linux: Kompletní průvodce programátora, Computer Press, a.s., 2008. 688 s. ISBN 978-80-251-2084-2 |
| |
MITCHELL, Mark, OLDHAM, Jeffrey, SAMUEL, Alex, Pokročilé programování v operačním systému Linux, SoftPress, 2002. 320 s. ISBN 80-86497-29-1 |
 |
Úvodní informace o kurzu, GNU Autotools, použití Make a GCC, základní principy fungování dynamických knihoven v prostředí GNU/Linux, kde získávat informace. |
 |
Štábní kultura kódu − coding-styly, dokumentace (Doxygen), problémy přenositelnosti kódu, zpracování parametrů příkazové řádky, práce s proměnnými prostředí, vytváření patchů, API vs. ABI, dynamicky linkované objekty (princip pluginů). |
 |
Chybové a ladicí výpisy, syslog, debuggery, valgrind, profilovací nástroje, perf, procfs, typologie běžných chyb. |
 |
Systémová volání, ošetření chyb, vytváření procesů a další operace s nimi (čekání na ukončení), práva procesu (reálné vs. efektivní), SetUID aplikace. |
 |
Signály (posílání signálů a reakce na ně, blokování signálů, synchronní zpracování signálů), anonymní a pojmenované roury, lehký úvod do D-Busu. |
 |
Vlastnosti vláken, implementace vláken v Linuxu, vytvoření nového vlákna, spojování vláken, atributy vláken, data specifická pro vlákna, ukončování vláken a clean-up handlery. |
 |
Motivace a teoretické základy problematiky souběhu a kritické sekce, mutexy, problém uváznutí (deadlock), spinlock, Read/Write zámky, semafory, bariéra, podmínkové proměnné. |
 |
Klient-server model, sockety − základní struktury, vytvoření socketu, připojení, rezervace portu, přijetí spojení. |
 |
Sdílená a mapovaná paměť, přístupová práva k paměti, dočasné soubory. |
 |
Práce se zařízeními (ioctl), práce se soubory (opakování základních operací), přístupová práva souboru, manipulace s vlastnostmi souboru, zamykání souborů, události na souborech a událostmi řízené programování. |
 |
Postupy při lokalizaci aplikací, národní prostředí v aplikacích, gettext(), C preprocesor. |