Course pages 2017–18
Concurrent and Distributed Systems
Lecture notes
There are sixteen handouts available for Concurrent and Distributed Systems in Michaelmas Term 2017:
- Lecture 1: Introduction to concurrency, threads, and mutual exclusion
- Lecture 2: More mutual exclusion, semaphores, and producer-consumer relationships
- Lecture 3: CCR, monitors, and concurrency in practice
- Lecture 4: Deadlock, Livelock, and Priority Inversion
- Lecture 5: Concurrency without shared data, composite operations and transactions, and serialisability
- Lecture 6: Isolation vs. Strict Isolation, 2-Phase Locking (2PL), Time Stamp Ordering (TSO), and Optimistic Concurrency Control (OCC)
- Lecture 7: Crash recovery, lock-free programming, and transactional memory
- Lecture 8: Case study - FreeBSD kernel concurrency
- Lecture 9: Introduction to distributed systems, client-server computing, and RPC
- Lecture 10: Case study: the Network File System (NFS)
- Lecture 11: Object-Oriented Middleware (OOM), clocks and distributed time
- Lecture 12: Clock synchronization and logical time
- Lecture 13: Vector clocks, consistent cuts, process groups, and distributed mutual exclusion
- Lecture 14: Elections, distributed transactions, and replication
- Lecture 15: Replication, quorums, consistency, CAP, and Amazon/Google case studies
- Lecture 16: Security and NASD/AFS/Coda case studies
Corrections/changes to slides after lecture
There are not currently any corrections to the slide decks.
Supervision material
- Concurrent and Distributed Systems - supervision questions 1: Semaphores, generalised producer-consumer, and priorities
- Concurrent and Distributed Systems - supervision questions 2: Transactions
- Concurrent and Distributed Systems - supervision questions 3: RPCs and time
- Concurrent and Distributed Systems - supervision questions 4: Transparency, RPC, distributed objects, leadership and replication
Corrections/changes to supervision exercises
- Supervision 1, question 1 has been clarified to better explain that the goal is to develop replacement consumer pseudocode.
Optional additional material
Many of the ideas in concurrent systems can feel quite abstract in the absence of real-world experience. More glibly put, you can't understand a race condition without having debugged one! An introduction to concurrency primitives in Java, as well as several optional practical exercises, can be found here:
Prior years
Last year’s course materials are still available.