Pokročilé programování v systému Unix/Linux v jazyku C (UXAP)
Kurz je orientován na prohloubení znalostí a technik programování v systému Unix se zaměřením na oblasti používané hlavně při programování aplikací plnících roli serveru. V kurzu jsou probírána tři nosná témata: IPC – meziprocesorová komunikace, vícevláknové programování a síťová komunikace pomocí socketů.
Kurz je zaradený v kategóriách: |
Operační systémy → Linux / Unix Programování → C/C++ Ostatní |
Náročnosť kurzu: expert
Délka kurzu: 4 dny
Náplň kurzu:
- Procesy
- Vytvoření procesů, návaznosti procesů (process groups, sessions), obsluha ukončení potomků procesu (problematika zombie), vlastnosti procesů
- Postup vytvoření démona
- IPC komunikace
- Signály – účel a použití, obsluha signálů asynchronní a synchronní, blokování, doporučená metodika obsluhy signálů pro zabránění deadlocků
- Roura, FIFO, socketpair – vlastnosti a použití
- SystemV IPC - semafory, fronty zpráv, sdílená paměť – princip, vlastnosti a použití jednotlivých mechanismů
- POSIX IPC – semafory, fronty zpráv, sdílená paměť – princip, vlastnosti a použití jednotlivých mechanismů
- Používání sdílené paměti – podložené souborem, anonymní (SVR a BSD implementace)
- Využití vláknových prostředků (mutex, cond. variables) pro komunikaci mezi různými procesy
- Řešení klasické úlohy producer/consumer pomocí jednotlivých prostředků
- Vícevláknové aplikace dle POSIX
- Principy implementace vláken a z toho plynoucí vlastnosti
- Vytvoření, nastavení vlastností, ukončování vícevláknových aplikací
- Základní synchronizační mechanismy – mutex, conditional variables, R/W lock, barriers, spinlocks
- Strategie předcházení deadlockům a chybám vícecláknových aplikací
- Thread specific data (POSIX a GCC implementace) – účel a použití
- Síťová komunikace s využitím socketů - použití, vlastnosti, domény INET, INET6 a UNIX datagramovové a streamové spojení, používání multicastingu a broadcastingu v komunikaci
- Ladění a sledování běžících procesů - ladění pomocí gdb, vzdálené ladění, ladění programů s odstraněnými symboly. Metody sledování procesů (strace, ltrace, pstack, pmap) a profilling. Nástroje pro detekci chyb alokace a přetečení paměti.
- Účastníci standardně pracují v systému GNU/Linux (používá se aktuální verze distribuce CentOS) a dále mají k dispozici pro porovnání některých rozdílů systémy NetBSD a Solaris
Predpokladané znalosti: znalost jazyka C, základní orientace v programování v systémech Unix na úrovni kurzu C3 a uživatelská znalost práce s systému Unix/Linux
.Termíny kurzu:
Odporučené predchádzajúce a nadväzujúce kurzy: