This course will cover the basic mechanisms for building distributed systems (e.g., RPC, synchronization, transactions, etc.), a number of relevant subsystems of distributed operating systems (e.g., distributed file systems, distributed shared-memory systems, etc.), and issues in wide-area distributed systems (e.g., security, wide-area clustering, etc.).
* Distributed Mechanisms: user-level messaging (e.g., active message, VMMC, Fast Messages), MPI and higher-level communication protocols, RPC, distributed synchronization, and transactions.
* Distributed Algorithms: distributed consensus, leader election, membership, distributed clocks.
* Distributed Processor Scheduling: scheduling mixed parallel/sequential workloads, dynamic load sharing/balancing, and process/thread migration.
* Distributed File Systems: distributed naming, cooperative caching, stateful vs. stateless servers, file replication and migration for load balancing, and case studies.
* Distributed Shared-Memory Systems: memory coherency and consistency models, mechanisms for software DSM systems, and case studies.
* Fault-Tolerance: roll-back recovery (checkpointing), coordinated and uncoordinated checkpointing, and logging.
* Real-Time Distributed Systems: real-time scheduling (rate monotonic, deadline monotonic, and earliest deadline first) and real-time communication.
* Wide-area Systems: system support for Internet services and wide-area clustering.
* Security: threats and vulnerabilities, trusted computing base, authentication, mandatory access control, auditing, security policies, and intrusion detection.
A midterm examination, a final examination, and a course project, which is the cullmination of a series of assignments.