Fall 2002. Distributed/Multiprocessor Operating Systems.
Class
synopsis
- just a brief outline of topics covered in class
No guarantees of accuracy or completeness.
Class 1: Aug 26
- Introduction to Distributed Operating Systems
- Multiprocessor operating systems
- Problems with multiprocessor machines and differences between conventional
and multiprocessor operating systems
Class 2: Aug 28
- Classes of Multiprocessors - UMA, NUMA, NORMA
- Memory contention in Multiprocessor operating system (data, code, OS
memory)
- Coherence and caches in multiprocessors
Class 3: Sept 2
- Kernels of multiprocessors, the reentrancy problem
- Locking for preventing race conditions
- Atomicity - interrupt disabling or atomic instructions
- Techniques for atomicity in uniprocessors and multiprocessors
Class 4: Sept 4
- Memory contention in multiprocessors - due to sharing of data
- Using and implementing MUTEX locks
- Reentrancy in kernel and application code for shared memory systems
- Parallel programming using the fork-join construct
Class 5: Sept 9
- Using Barrier Synchronization in Parallel Programs
- Implementing Barrier Synchronization using Semaphores
- Scheduling threads on UMA machines - co-scheduling, affinity scheduling,
smart scheduling
Class 6: Sept 11
- Architecture of NUMA systems
- Programming the NUMA machine
- Operating systems for NUMA machines (trivial)
- Parallel Processing using multiprocessors
- The packages - PVM, MPI, Open MP, Linda
- Programming with PVM
Class 7: Sept 16
- Guest Lecture - Prashant Dewan - Domain name Service
Class 8: Sept 18
- Guest Lecture: Austin Godber: Security
Class 9: Sept 23
- PVM, MPI and Open MP, programming
- Shared memory vs/ Distributed memory (for parallel processing)
- Introduction to Linda
Class 10: Sept 25
- Linda - how to program and use for parallel processing
- Linda - execution characteristics (worker pool model)
- Introduction to Distributed Systems and Distributed Operating Systems
Class 11: Sept 30
- The NFS file system
- Mounting and namei - resolving external file names
- NSF client and NSF server operation (including caches)
- Performance issues in NSF
Class 12: Oct 2nd
- The Andrew File system - how to handle scalability
- Distributing Operating Systems (logical/physical and the message possing
model)
- Message passing - a conceptual design
Class 13: Oct 7th
- Blocking vs. Non-blocking sends and receives
- Message passing - how to program
- Using ports, exchanging messages, port directionality
- The client-server programming style
- Why asynchronous programming is BAD
- Naming of ports
- Nameservers and well known ports
Class 14: Oct 9th
- Recap of message passing programming strategies (client server is good)
- Using (or not using) timeouts
- Problems with client server programming (bottleneck, failure, recursion)
- How to get around, above problems
- Multithreading the servers
Class 15: Oct 14th
- Implementing message passing - one machine
- Kernel data structures
- Code for send and receive
- Discussion of data structuring, dynamic memory allocation, blocking
Class 16: Oct 16th (homework
due: hand in, in class, or via courier from off campus)
- Distributed implementation of ports
- Naming of ports - location independence
- Sending messages to remote ports (netmessage server)
- Receiving messages from remote ports - complicated interaction with
netmessage server and proxy ports
Class (noclass): Oct 21st
Class 17: Oct 23rd
- Message Passing Operating Systems
- The Microkernel Architecture
- Threads and coroutines
- Using coroutines as threads
- User level threads (intro)
Class 18: Oct 29th
- User
level threads and Kernel level threads
- Multithreaded
servers
- Single threaded stateless servers with cookies
Class 19: Oct 30th (homework
due: hand in, in class, or via courier from off campus)
- Locking in distributed systems
- Advisory and mandatory locking
- Shared and Exclusive locks
- Designing a Lock server
Class 20: Nov 4th
Class 21: Nov 6th
- RPC Continued
- The IDL compiler
- Name service, version numbers and how clients find servers
- Introduction to DSM
-- Nov 11 - holiday
Class 22: Nov 13th
Class 23: Nov 18th
- Implementing sequential consistent DSM
- (page based, page fault handling, DSM server, invalidations)
- Page shuttling problem
- Locking and DSM
- Release consistent DSM
Class 24: Nov 20th
- The Muddy Children Problem
- Hierarchies of Knowledge, Common Knowledge
- Consensus in distributed systems (coordinated attack problem)
- Two-phase commit protocol.
Class 25: Nov 25th
Class 26: Nov 27th
Class 27: Dec 2nd
- Examples of Distributed Snapshot execution
- Proof of correctness of the algorithm
- Properties of the recorded state.
Class 28: Dec 4th
- Event ordering and logical clocks
- Synchronizing logical clocks
- Distributed Mutual Exclusion
- Lamport's Algorithm for Dist. Mutex
Class 29: Dec 9th, LAST DAY OF CLASS
Dec 17th, FINAL EXAM 10am-11:50am