Programování v systému Unix/Linux - pro pokročilé (LNX8)

Unixové systémy, Linux

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ů.

Lokalita, termín kurzu



Brno
28.6. - 1.7.2016
Objednat
26.7. - 29.7.2016
Objednat
23.8. - 26.8.2016
Objednat
Praha
21.6. - 24.6.2016
Objednat
19.7. - 22.7.2016
Objednat
16.8. - 19.8.2016
Objednat
Vlastní Školení na míru (termín, lokalita, obsah, délka)

Náplň kurzu:

Skrýt detaily
  • Procesy
    1. Vytvoření procesů, návaznosti procesů (process groups, sessions), obsluha ukončení potomků procesu (problematika zombie), vlastnosti procesů
    2. Postup vytvoření démona
  • IPC komunikace
    1. 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ů
    2. Roura, FIFO, socketpair - vlastnosti a použití
    3. SystemV IPC - semafory, fronty zpráv, sdílená paměť - princip, vlastnosti a použití jednotlivých mechanismů
    4. POSIX IPC - semafory, fronty zpráv, sdílená paměť - princip, vlastnosti a použití jednotlivých mechanismů
    5. Používání sdílené paměti - podložené souborem, anonymní (SVR a BSD implementace)
    6. Využití vláknových prostředků (mutex, cond. variables) pro komunikaci mezi různými procesy
    7. Řešení klasické úlohy producer/consumer pomocí jednotlivých prostředků
  • Vícevláknové aplikace dle normy POSIX
    1. Principy implementace vláken a z toho plynoucí vlastnosti
    2. Vytvoření, nastavení vlastností, ukončování vícevláknových aplikací
    3. Základní synchronizační mechanismy - mutex, conditional variables, R/W lock, barriers, spinlocks
    4. Strategie předcházení deadlockům a chybám vícecláknových aplikací
    5. Thread specific data (POSIX a GCC implementace) - účel a použití
  • Atomické operace, odstraňování zámků a optimalizace
    1. Použití atomic builtins v gcc
  • Síťová komunikace s využitím socketů
    1. použití a vlastnosti socketů
    2. domény INET
    3. INET6 a UNIX datagramovové a streamové spojení
    4. používání multicastingu a broadcastingu v komunikaci
  • Pokročilá práce se TCP/IP sockety
    1. Neblokující TCP/IP spojení a jeho navázání
    2. Sledování velkého množství descriptorů a doporučení
    3. Srovnání volání poll, select a epoll
  • Pokročilé operace se signály
    1. Realtime signály
    2. Signály nesoucí data
    3. Příjem signálů s epoll pomocí deskriptorů
  • Ladění a sledování běžících procesů
    1. ladění pomocí gdb
    2. vzdálené ladění
    3. ladění programů s odstraněnými symboly
    4. Metody sledování procesů (strace, ltrace, pstack, pmap) a profilling.
    5. Nástroje pro detekci chyb alokace a přetečení paměti.
  • Práce s nástrojem Valgrind pro hledání problémů s přístupem k paměti a memory leaků
    1. Ladění problémů s pamětí
    2. Detekce memory leaků
    3. Detekce race conditions
Předpokládané znalosti:
Znalost jazyka C, základní orientace v programování v systémech Unix a uživatelská znalost práce se systému Unix/Linux.
Doporučený předchozí kurz:
Programování v systému Unix/Linux - základní kurz (LNX7)
Časový rozvrh:
4 dny (9:00hod. - 17:00hod.)
Cena kurzu:
16 800,00 Kč (20 328,00 Kč včetně 21% DPH)