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ů)
      2. (10 bodů)
      3. (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. 9.12.2025 - J. Mazel - Lightning

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
  4. 14.10.2025 - Klasické synchronizační problémy
  5. 21.10.2025 - Návrh paralelního systému, úvod do distribuovaných systémů
  6. 4.11.2025 - Komunikace v distribuovaných systémech
    • slidy
    • van Steen, Tanenbaum, kapitola 4
    • Bobrov, kapitola 5
    • Andrews, kapitoly 7 - 10 (detailnější)
  7. 18.11.2025 - Koordinace v distribuovaných systémech: čas a vzájemné vyloučení

Cvičení

  1. 23.9.2025 - Úvod | obsah
  2. 30.9.2025 - Kritická sekce | obsah
  3. 7.10.2025 - Synchronizační primitiva | obsah
  4. 14.10.2025 - Problém kuřáků cigaret | obsah
  5. 21.10.2025 - Fosterova metodologie, základy DS | obsah
  6. 4.11.2025 - Komunikace v DS | obsah
  7. 18.11.2025 - Koordinace v DS | obsah