Comp 533: Distributed Systems
This course will
provide a practical overview distributed systems. It will
be driven by a series of implementation-based assignments, which will
form a semester-wide project. We will cover
classical abstractions for sharing information among distributed processes.
These sit between the network layer and application and include:
distributed shared memory, byte and object communication, remote procedure
call, and broadcast/multicast sessions. Some of the general issues we will
address in the study of these abstractions are naming; synchronization; extensibilty; flexibility; programmability; and performance. Some of the specific abstractions we
will cover are Unix pipes, sockets and signals; CSP and Ada guards; Ada
Rendezvous; and Java NIO, Serialization and RMI. We will also cover
classical algorithms for ensuring that data stored by multiple sites are kept consistent even when message communication is
unreliable and some sites go down. These include the Two Generals’ Problem,
non-atomic and atomic broadcast, two-phase commit, Paxos,
and Blockchain. The assignments
will involve experimentation, use, analysis, and/or implementation of some of
the covered abstractions and algorithms. These assignments are
layered to form a semester-wide project, allowing students to better
understand the relationship among and motivation for the concepts
implemented. Successive assignments required students to implement/use
additional IPC abstractions and consistency/consensus algorithms. Later
assignments implicitly test almost all aspects of previous assignments. We will not cover
topics that are the focus of other courses at UNC such as proofs of consensus
algorithms (Comp 735), distributed file systems (Comp 790), “big data”, data
centers, and other distributed applications (Comp 790s), and parallelization/distribution of
standard classical single-processor algorithms (Comp 633).consideration to
things such as good class participation. You are encouraged to discuss the
assignments with fellow students but required to write/code the
solutions/programs individually. Also you cannot use
solutions from previous offerings of the course. Not following these rules is
a violation of the honor code policy. |
Exam 1 |
|
Exam 2 |
|
Unit |
Slides/Videos |
Reference
Material |
Assignment |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Unit |
Slides/Videos |
Reference
Material |
Assignment |
|
|
Course Overview |
|
|
||
|
Threads and Thread Coordination (for extra credit quizzes) |
|
|||
|
Java Remote
Method Invocation |
|
|||
|
Device-CPU Communication |
|
|
|
|
|
Basic Computing Systems Concepts: Hardware, OS, Design Patterns |
|
|||
|
|
|
|
|
|
|
High-Performance Parallel and Distributed Computing
(All) 2. Performance vs. Consistency 3.
OpenMP Declarative and Procedural Concurrency 4.
OpenMP Declarative Division of Labor and Reduction 5.
Operating System Multi-Processor
Scheduling 6.
OpenMP vs MapReduce |
|
|
||
|
Java Byte IPC: From I/O to NIO I/O Blocking IPC NIO and Select NIOManager-Basics NIO Manager-Command Objects Summary |
|
Interrupt Processing (See Synchronization of the Upper and
Lower Halves and Rules for Interrupt Processing) See Background Concepts and Details in Atomic
Broadcast using NIO |
||
|
Issues in Serialization (for Extra Credit quiz and
assignment) |
|
Extensible
Serialization (Extra Credit) |
||
|
Java Remote
Method Invocation |
|
Centralized Asynchronous Consensus Using RMI and NIO |
||
|
Byte Communication |
Interprocess Communication (PDF) |
Distributed Synchronous Consensus Using GIPC, RMI and NIO |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Atmosphere Tutorial |
|
|
|
|
|
RPC Implementation: Basic Steps |
|
|
||
|
IPC Design Space |
|
|
||
|
Distributed
Consensus-Part 5: Paxos Algorithm |
|
|
||
|
Distributed
Consensus-Part 6: Paxos Implementation (Optional) |
|
|
(Optional) |
|
|
Mystery of the 20G Byte File |
|
|
|
|
|
|
|
|
|
|
|
Rows below are
under construction |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Introduction to Distributed Systems |
|
|
|
|
|
Threads and Thread Coordination |
|
|
||
|
Byte Communication |
|
Interprocess Communication (PDF) |
||
|
Java Remote
Method Invocation |
|
Replication and Consensus Using GIPC |
||
|
IPC Design Space |
|
|
||
|
RPC Implementation: Basic Steps |
|
|||
|
RPC Architecture |
|
|
||
|
RPC and Factory Patterns |
|
|
||
|
Java
Object Communication |
|
|
|
|
|
Issues in Serialization |
|
|||
|
Distributed
Consensus-Part 1: Context |
|
|
|
|
|
Distributed
Consensus-Part 2: Replicated Objects and Asynchronous Learners |
|
|
|
|
|
Distributed
Consensus-Part 3: (Semi) Synchronous Replication |
|
|
|
|
|
Distributed
Consensus-Part 4: Centralization |
|
|
|
|
|
Distributed
Consensus-Part 5: Paxos Algorithm |
|
|
|
|
|
Distributed
Consensus-Part 6: Paxos Implementation |
|
|
|
|
|
Group Communication |
|
|
|
|
|
GIPC Overview |
|
|
|
|
|
GIPC
Extensibility |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|