Paralelní a distribuované systémy

2025/2026, ZS

Kurz se zabývá základními aspekty paralelních a distribuovaných systémů. Od základů paralelismu, klasických problémů a přístupů k synchronizaci sdílenou pamětí, přes úvod do distribuovaných systému a výběr algoritmů pro řešení jejich základních problémů, až po přehled některých zajímavých moderních distribuovaných systémů.

Zdroje

Seznam zdrojů bude během semestru rozšiřován, zejména o reference ke konkrétním zmínkám z přednášek/cvičení. Podívejte se i k jednotlivým přednáškám a do zdrojů uvedených ve slidech.

Zápočet

Pro získání zápočtu budete potřebovat získat alespoň 50 bodů.

Body lze získat následujícím způsobem:

  1. Programovací úkoly
    1. (10 bodů) Implementujte sdílený čítač ve svém oblíbeném jazyce. Řešení pište pro n vláken, kde n je parametr programu.
      • bez synchronizace. Nachystejte příklad, kde se (pravděpodobně) ukážou problémy.
        • zkuste použít více možností k tvorbě vláken (virtuální vlákna, ThreadPooly, …) dle možností jazyka
      • se synchronizací pomocí Lamportova bakery algoritmu.
      • se synchronizací pomocí vhodných synchronizačních primitiv jazyka (zkuste alespoň dvě různá)
    2. (10 bodů) Implementujte vlastní semafor v jazyce C s pomocí C11 atomics. Použijte svůj semafor pro řešení problému kuřáků.
    3. Implementujte ve svém oblíbeném jazyce jednoduchý framework pro simulaci distribuovaného systému a v něm pak implementujte:
      • (10 bodů) vzájemné vyloučení (libovolnou variantu)
      • (10 bodů) chord systém
      • (10 bodů) Raft pro volbu lídra
    • Ke všem úkolům nachystejte ukázku.
    • Odevzdávat můžete postupně, nebo vše naráz.
    • Termín odevzdání je cvičení v zápočtovém týdnu.
    • Odevzdává se osobně (popovídáme si nad tím).
  2. Čtení
    • Body lze získat za přečtení, zpracování krátké recenze (1 x A4, font 10, standardní řádkování) a rozhovor se mnou o některém z následujících článků.
    • Při rozhovoru musí být vidět, že článku skutečně rozumíte. Tj. LLM generované shrnutí a trocha povídání k získání bodů nestačí.
    • Rozhovor o článcích proběhne vždy po dodání recenzí a předchozí domluvě, typicky v mých konzultačních hodinách.
    • Články na výběr budu zveřejňovat během semestru, dle probraných témat.
      1. (dvojice za 10 bodů)
  3. (20 bodů) Prezentace nějakého zajímavého nástroje, knihovny, či nedávného výsledku související s paralelními či distribuovanými systémy kolegům na cvičení.
    • Zhruba 20-30 minut povídání a ukázek + handout se základními informacemi pro ostatní.
    • Téma navrhněte a detaily domluvíme společně.
    • Prezentace proběhne na cvičení, termín domluvíme při zadání tématu.
    • Témata se nemohou opakovat.
    • Na větších tématech může spolupracovat více lidí (úměrně tématu).
    • Domluvená témata a termíny:
      1. TBA

Zkouška

Seznam otázek

TBA

Seznam článků

TBA

Přednášky

  1. 23.9.2025 - Úvod
  2. 30.9.2025 - Paralelní systémy, kritická sekce
  3. 7.10.2025 - Synchronizační primitiva
    • slidy
    • Ben-Ari, kapitoly 6 a 7 (více informací k semaforům a monitorům)
    • Herlihy, Shavit, kapitola 17 (bariéry)
    • Dokumentace vašeho oblíbeného jazyka (atomické akce, mutex, lock, semafor, monitor, podmíněná proměnná, bariéra, ThreadPool, …)
    • Další ve slidech

Cvičení

  1. 23.9.2025 - Úvod | obsah
  2. 30.9.2025 - Kritická sekce | obsah
  3. 7.10.2025 - Synchronizační primitiva | obsah