Paralelní programování v C pro Linux a POSIX platformy (LNXPR3)

Unixové systémy, Linux - programování

Linux a UNIX platformy nabízejí širokou podporu pro multiprocesing a multithreading, spolu s nástroji pro synchronizaci, komunikaci a sdílení zdrojů. Zatímco standardní knihovna ISO C se zaměřuje primárně na práci s vlákny, UNIX prostředí tradičně podporuje paralelismus pomocí procesů. POSIX rozhraní však umožňuje využití těchto technologií jak pro procesy, tak pro vlákna, což otevírá možnosti pro vývoj vysoce výkonných aplikací.

Tento kurz vás provede základními i pokročilými funkcemi operačního systému souvisejícími s komunikací mezi procesy, síťovým připojením a sdílenou pamětí. Naučíte se, jak tyto nástroje efektivně využívat a jak propojit mechanismy poskytované jádrem operačního systému.

TOTO ŠKOLENÍ VÁM POMŮŽE:

  • Pochopit principy multiprocesingu a multithreadingu na Linuxových a UNIX platformách
  • Využít POSIX API pro vývoj vysoce výkonných paralelních aplikací
  • Zvládnout techniky synchronizace a komunikace mezi procesy a vlákny
  • Pracovat s pokročilými mechanismy, jako je sdílená paměť, sockety a fronty zpráv
  • Efektivně ladit paralelní aplikace a řešit problémy, jako jsou deadlocky a problémy s přístupem k paměti

KDO BY SE MĚL KURZU ZÚČASTNIT?

  • Zkušení vývojáři pracující na vysoce výkonných aplikacích pro Linux a POSIX platformy
  • Programátoři, kteří chtějí zdokonalit své dovednosti v oblasti paralelismu a komunikace mezi procesy
  • IT profesionálové, kteří hledají hlubší pochopení synchronizace a sdílení zdrojů v UNIX prostředí

Privátní školení a termíny na míru

Toto téma je možné zrealizovat pouze jako privátní, a to nejen formou uzavřeného firemního kurzu, ale také jako individuální konzultaci pro jednotlivce.

V případě kurzu na míru je níže uvedená osnova pouze inspirací. Finální obsah vzdělávání, jeho délka i termíny budou přizpůsobeny konkrétním vstupním znalostem, potřebám a cílům účastníků.

Cenovou nabídku vám rádi připravíme na základě vstupů zaslaných e-mailem nebo zadaných prostřednictvím poptávkového formuláře. Cena privátního školení vychází z náročnosti požadované obsahové náplně školení, časového rozsahu a celkového počtu přihlášených osob.

KDE A KDY KURZ PROBÍHÁ?

Kontaktujte nás

S námi máte na výběr: Přijďte na kurz osobně do naší učebny, nebo se ke kurzu připojte online. Pokud preferujete online formu, uveďte prosím do poznámky v objednávce "Připojím se virtuálně".
Více informací k hybridní formě školení naleznete zde.

Náplň kurzu:

Skrýt detaily
  • High-performance parallel applications
    1. Varying approaches to parallelism
    2. UNIX application development with POSIX.1-2024
    3. Cross-platform parallelism in C11 and C23
  • Inter-process communication
    1. Multiprocessing with POSIX API
    2. Mechanisms provided by the operating system
    3. Custom solutions for IPC
  • Sockets and message queues
    1. Talking to forked processes
    2. Local client-server architecture
    3. Cluster and remote communications
  • Shared memory communication
    1. Bypassing the kernel with POSIX and SystemV
    2. Forking and client-server variants
    3. Memory access synchronization via semaphores
  • Threaded communication
    1. Why are people afraid of threads
    2. Advantages of threaded applications
    3. Thread synchronization
  • Hybrid synchronization mechanisms
    1. Mechanisms for both threads and processes
    2. Linux inter-task communication
    3. Real-time consideration
  • Locking and blocking
    1. Mutexes, condition variables
    2. Semaphores and Linux futexes
    3. Deadlocks and other issues
  • Lock-free synchronization
    1. Atomic operations and variables
    2. Memory ordering and fencing
    3. Data structure examples
  • High-performance operation
    1. Large numbers of file descriptors
    2. Event multiplexing mechanisms
    3. Playing nice with the scheduler
  • Debugging parallel applications
    1. Debugging threads and processes 
    2. Data access coherence and heisenbugs
    3. Memory allocation coherence
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:
Rozhraní operačního systému na Linux a POSIX platformách (LNXPR2)
Časový rozvrh:
3 dny (9:00hod. - 17:00hod.)
Jazyk:
Česky