• Course code:63261
  • Credits:6
  • Semester: winter
  • Contents

1. Parallel systems architecture.

2. Concurrency, processes and threads: interleaving, parallelism, execution order, pre-emption.

3. Working with threads: creation, joining, and problems.

4. Concurrent access to shared data: race condition and mutual exclusion, atomic operations.

5. Event synchronisation: deadlock, conditional variables, barrier.

6. Patterns: semaphores, producer-consumer, readers and writers, task pool.

7. Multithreading in practice: thread-safe programming, advantages of multithreaded programs, multithreaded program models

8. Graphical accelerator architecture.

9. Graphical accelerator programming, offload model.

10. Distributed systems: benefits and challenges, network protocols, client-server systems, remote function calling (RPC).

11. Systems models and faults: synchronous, partially synchronous and non-synchronous, system failure, faults and fault tolerance, Byzantine faults and the two-generals problem.

12. Clock time and event classification: physical clocks, universal time, time synchronisation and drift, protocol NTP, causality.

13. Logical time: Lamport clock, vector clocks, broadcast.

14. Replication and quorums: replica consistency, read-after-write consistency, state machine replication, leader-based replication.

15. Consensus: leader selection, the Raft algorithm.

16. Distributed systems use cases: consensus, causal propagation, two-stage commit.

  • Study programmes
  • Distribution of hours per semester
45
hours
lectures
30
hours
laboratory work
  • Professor
Instructor
Room:R2.56 - Kabinet
Teaching Assistant
Room:R2.41 - Laboratorij LASPP