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í
  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

  1. Algoritmy pro kritickou sekci.
  2. Základní synchronizační primitiva a jejich použití.
  3. Prostředky pro synchronizaci vláken.
  4. Prostředky pro synchronizaci procesů.
  5. Koordinace času v DS.
  6. Vzájemné vyloučení v DS.
  7. Volba lídra v DS.
  8. Shoda v DS.
  9. Tolerance chyby v DS.
  10. Globální stav v DS a distribuovaný commit.
  11. Replikace a konzistence v DS.
  12. Blockchain.

Více na poslední přednášce.

Seznam článků

  1. MapReduce: Simplified Data Processing on Large Clusters
  2. ZooKeeper: Wait-free coordination for Internet-scale systems
  3. In Search of an Understandable Consensus Algorithm (Extended Version)
  4. Practical Byzantine Fault Tolerance
  5. Bitcoin: A Peer-to-Peer Electronic Cash System

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í
  8. 25.11.2025 - Volba leadera a chyby v distribuovaných systémech, (+ základ chord systému ze cvičení)
  9. 2.12.2025 - Shoda, konzistence a replikace v distribuovaných systémech
  10. 9.12.2025 - Blockchain, Bitcoin a Ethereum - slidy

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
  8. 25.11.2025 - Chord systém | obsah
  9. 2.12.2025 - Ukázky zmíněných nástrojů | obsah
  10. 9.12.2025 - Prezentace k zápočtům (Lightning, Docker) | obsah