Fall 2003. Distributed/Multiprocessor Operating Systems.
Class
synopsis
- just a brief outline of topics covered in class
No guarantees of accuracy or completeness.
Class 1: Aug 24
- Introduction to the course -- exams, homeworks, projects, lectures, book
- Introduction to Multiprocessor Operating Systems
- Introduction to Distributed Operating Systems
- Ramblings on Turing Machines and Distributed Systems Theory
- Scribblings in class ....
You need Microsoft Journal Viewer to see the file,
download from
Microsoft Site
Class 2: Aug 26
- Why multiprocessors
- Multiprocessor Classifications
- Caching in uniprocessors
- Caching in Multiprocessors
- Coherence problems, snoopy caches, cache coherent multiprocessors
- Memory contention, code and data
- Read write data contention
- Scribblings in class ....
Class 3: Aug 31
- Memory Contention and memory conflicts
- Atomicity, Race conditions
- Errors due to race conditions
- Structuring a OS kernel -- interrupt driven
- API calls
- Multi-threaded executions in the OS kernel
- Atomicity via Interrupt Disable
- Scribblings in class
Class 4: Sept 2
- Atomicity
- Critical sections (mutual exclusion, progress, bounded waiting)
- Software solutions (Peterson, Dekker, Lamport)
- Need atomicity to get atomicity (Hardware assist -- interrupt disable or
test-and-set)
- Semaphores-- Dijkstra
- Semaphore implementations (queuing of PCBs in real systems)
- Test and set - atomic instructions
- Using test and set to get atomicity
- Scribblings in class
Class 5: Sept 7
- Semaphores (mutex locks) and Spin locks
- Choice of locks depending on hardware and application
- Process Synchronization
- Producer consumer and variants
- one item buffer, bounded buffer, multiple produces/consumers
- Semaphore implementation for multiprocessors
- Scribblings in class
Class 6: Sept 9
Class 7: Sept 14
- programming threads with fork/join, start-thread and cobegin-coend (parbegin-parend)
- thread properties and different types of threads
- barrier synchronization
-
POSIX Threads
- Scribblings in class
Class 8: Sept 16
Class 9: Sept 21
Class 10: Sept 23
- Threads, again
- Non preemptive, cooperative multiprogramming
- Preemptive threads
- Kernel Level threads
- Atomicity/Synchronization/MT Safe libraries
- Shared Memory Parallel Programming (loops, threads and barriers)
- Scribblings in class
Class 11: Sept 27
- Homework #1 assigned
- Scheduling in Multiprocessors (Round Robin, Co-Scheduling, Affinity
Scheduling, Handoff Scheduling)
- Parallel Programming - shared memory and message passing
- PVM, MPI, Open MP
- Linda
- Scribblings in class
Class 12: Sept 30
- Linda
- NUMA architecture and programming
- NORMA (Cluster) architecture and programming
- Distributed Systems.....
- Autonomy and collaboration
- Load balancing, efficiency, reliability
- USAGE: Distributed Application - Info sharing - resource sharing -
reliability - flexibility
- Issues - TRANSPARENCY (access/location/replication/failure)
- Scribblings in class
Class 13: Oct 5
- Physical/Logical centralization and distribution
- Distributable system models - message, object, shared memory
- History of Networking and Distributed Systems
- Data-less Workstation Configuration for Sun-NFS
- Design of Unix File System (inodes, inumbers)
- Mounting remote directories, in NFS
- Scribblings in class
Class 14: Oct 7
Class 15: Oct 12
- Distributable System Models (message, object, shared memory)
- Basics of Messages
- Semantics of SEND
- Semantics of RECEIVE
- Programming with Send and Rcv
- Using PORTS
- Scribblings in class
Class 16: Oct 14
- Client server programs
- Why are servers needed (global state)
- Post assignment for multiple client single server (also connectionless
communications)
- Nameservers
- Scribblings in class
Class 17: Oct 19
-
Micro-kernels
-
How micro-kernels work
-
Advantages, Disadvantages of micro-kernels
-
How to implement PORTS -- in single machine systems
(or multiprocessors)
-
(Use a buffer and semaphores, and a producer consumer
structure)
-
Scribblings in class
Exam - Mid Term, in class: Oct 21
Class 18: Oct 26
Class 19: Oct 28
- Lots of Readings Posted....
- Global ports, or distributed implementation of ports
- Local and remote sends and receives
- The NetMsg Service (network message service)
- add network send and receive for message transport
- path send and receive to interface with netmsg service
- use threads for waiting in netmsg service
- netmsg serice without threads (more the delivery of messages to the
sender, in case the receiver has to wait)
- Scribblings in class
Class 20: Nov 2
- Check for HW3 and HW4, posted....
- Multithreading servers
- Using separate multiple processes
- Dynamic threads
- Static Threads
- Passing arguments to threads
- Advantages, disadvantages of multithreading
- Recursive servers
- Stateless/Single threaded servers and Cookies
- Scribblings in class
Class 21: Nov 4
- Cookies revisted
- Lock server
- Locking modes and semantics
- Algortihms for locking - starvation prevention
- scribblings in class
Class 22: Nov 9
Class 23: Nov 16
- RPC properties and semantics (parameter passing)
- IDL for defining RPC
- IDL Compiler
- Generation of RPC server
- Generation of Client Stubs
- Client server version control
- Introduction to DSM
- Scribblings in class
Class 24: Nov 18
- "page based" Distributed Shared Memory
- DSM server and DSM clients
- Algorithms for client and server for coherence
- Page modes
- Invalidation
- Page shuttling -- advantages and disadvantages of DSM
- False sharing -- and locking
- Release Consistent DSM
- Scribblings in class
Class 25: Nov 23
- Muddy Children Problem (read Halpern and Moses, see reading list)
- Hierarchies of Knowledge
- Consensus in Distributed Systems (Coordinated Attack Problem)
- Two Phase Commit algorithm
- Scribblings in class
<No classs, Thanksgiving, Nov 27>
Class 26: Nov 30
Class 27: Dec 2
Class 28: Dec 7 [Last Class]
Final Exam: