Vsebina:

  • Arhitektura vzporednih sistemov.
  • Sočasnost, procesi in niti: prepletanje, vzporedenje, vrstni red izvajanja, preklapljanje med nitmi.
  • Delo z nitmi: ustvarjanje, pridruževanje, težave.
  • Sočasen dostop do skupnih podatkov: tvegano stanje in medsebojno izključevanje, atomične operacije.
  • Sinhronizacija dogodkov: smrtni objem, pogojne spremenljivke, pregrada.
  • Vzorci: semaforji, izdelovalec-porabnik, bralci in pisatelji, bazen nalog.
  • Večnitnost v praksi: varno delo z nitmi, prednosti večnitnih programov, modeli večnitnih programov
  • Porazdeljeni sistemi: prednosti in izzivi, mrežni protokoli, sistemi odjemalec-strežnik, klicanje oddaljenih funkcij (RPC).
  • Modeli sistemov in napake: sinhroni, delno sinhroni in ne sinhroni, odpoved sistema, napake in odpornost na napake, bizantinske napake in problem dveh generalov.
  • Čas in razvrščanje dogodkov: fizične ure, univerzalni čas, sinhronizacija in polzenje časa, protokol NTP, vzročnost.
  • Logični čas: Lamportova ura, vektorske ure, protokol širjenja informacij.
  • Podvajanje in sklepčnost: konsistentnost replik, branje po pisanju, podvajanje z avtomati stanj, podvajanje z voditeljem.
  • Soglasje: izbiranje voditelja, algoritem Raft.
  • Porazdeljeni sistemi na primerih iz prakse: soglasje, vzročno širjenje, dvostopenjsko potrjevanje.
  • Arhitektura grafičnih pospeševalnikov.
  • Programiranje grafičnih pospeševalnikov.

Content:

  • Parallel systems architecture.
  • Concurrency, processes and threads: interleaving, parallelism, execution order, pre-emption.
  • Working with threads: creation, joining, and problems.
  • Concurrent access to shared data: race condition and mutual exclusion, atomic operations.
  • Event synchronisation: deadlock, conditional variables, barrier.
  • Patterns: semaphores, producer-consumer, readers and writers, task pool.
  • Multithreading in practice: thread-safe programming, advantages of multithreaded programs, multithreaded program models
  • Graphical accelerator architecture.
  • Graphical accelerator programming, offload model.
  • Distributed systems: benefits and challenges, network protocols, client-server systems, remote function calling (RPC).
  • Systems models and faults: synchronous, partially synchronous and non-synchronous, system failure, faults and fault tolerance, Byzantine faults and the two-generals problem.
  • Clock time and event classification: physical clocks, universal time, time synchronisation and drift, protocol NTP, causality.
  • Logical time: Lamport clock, vector clocks, broadcast.
  • Replication and quorums: replica consistency, read-after-write consistency, state machine replication, leader-based replication.
  • Consensus: leader selection, the Raft algorithm.
  • Distributed systems use cases: consensus, causal propagation, two-stage commit.
Zadnja sprememba: torek, 26. september 2023, 12.14