CS 570 - Modern Operating Systems
Credits: 3
Course Description
The course briefly reviews classical operating system concepts and then introduces the fundamental paradigms of distributed operating systems including network communication paradigms, internetworking, and remote procedure calls. The course takes an in-depth look at distributed resource management (e.g., distributed scheduling and synchronization, DSM and DFS systems). Topics related to multiprocessor operating systems, and issues involved in protection of resources are also covered. Students will inspect and modify actual operating system code.
Prereqs: CS-470, or consent of instructor.
Needed Skills
CS 570 is intended as a graduate-level course in operating systems. Students should be capable of programming in C or C++, have a general knowledge of computer organization, compilers, and data structures. Students should also have had an undergraduate course that covers styles of operating systems, process management, main store management, time management, device control, file structures, virtual machines, program interface, user interface, synchronization, mutual exclusion, resource allocation.
Learning Outcomes
Students will learn the principles and practice of modern operating systems design. They will understand the issues and be able to explain common approaches to design:
1. distributed operating systems
2. distributed file systems
3. distributed failure recovery mechanisms, and
4. protection and security mechanisms
Measures
Student understanding of the above learning outcomes will be evaluated based on exams, programming projects, and homework assignments. The exams will focus on a broad comprehension of the material, using problems that touch on all areas studied. Programming projects and homework assignments will be used to evaluate the student's ability to put theory into practice, solving real issues faced by distributed operating system designers.
CAC Categories
Topic |
Core |
Advanced |
Math Fundamentals |
0 |
0 |
Data Structures |
4 |
0 |
Algorithms & Software Design |
20 |
8 |
Computer Organization and Architecture |
3 |
1 |
Concepts of Programming Languages |
6 |
0 |
Social and ethical issues |
2 |
0 |
Total |
35 |
9 |
Math Fundamentals: none
Data structures (4): Core (4): Distributed and multiprocessor OS data structures (process mgmt, memory mgmt, marshalling, etc) (2), Distributed file system data structures (2) Advanced (0):
Algorithms and Software Design (28): Core (20): Synchronization (time and coordination) algorithms (3), Distributed scheduling and process migration (2), Consistency algorithms and protocols (6), Distributed transactions and concurrency control (2), Fault tolerance and checkpointing algorithms (1), Security/Privacy and authentication algorithms (1), Naming services and service discovery (2), Network protocols (3)
Advanced (8): Advanced security/authentication algorithms (2), High availability and robust fault tolerance (1), Adaptive consistency algorithms (3), Scalable synchronization and transaction algorithms (1), Wide-area distributed operating system approaches (1);
Computer Organization and Architecture (4): Core (2): Distributed operating system models (1), Distributed file system architectures (1)
Advanced (1): Adaptive kernel architectures (1)
Concepts of Programming Languages (6): Core(6): Client/Server programming models (1), Shared memory programming models (2), Distributed file system APIs (2), Shared memory programming models (1).;
Social and Ethical Issues (2): Discussion of computer security and privacy mechanisms and discussion of professional and academic integrity (no assignments)
Oral Communication (presentations)
none
Written Communication
1-3 homeworks, 2-4 programming projects
Coverage
Theoretical Content: 30%
· mutual exclusion, causality, virtual time, (virtual) shared memory, remote services, transactions, conflicts, system reliability and availability, security levels
Problem Analysis: 30%
· Synchronization issues, scalability concerns, resource management and allocation, global state/knowledge maintenance, consistency problems, detecting/preventing deadlocks and starvation, scheduling goals, naming issues.
Solution Design: 40%
· clock algorithms, synchronization algorithms, agreement protocols, shared memory consistency protocols, distributed file system consistency, cache coherence protocols, scheduling algorithms, load balancing approaches, distributed deadlock detection, checkpointing approaches, cryptograph solutions, n-phase commit protocols, remote procedure callsStudent evaluation and feedback
Student evaluation and feedback
Students are evaluated based on their exams, homeworks, and programming projects. Exams are graded, returned, and gone over in class to clarify the correct solutions. Homeworks are marked to indicate where errors where made, often describing what was wrong and pointing out the correct approach. Programming projects are both read and executed to evaluate their correctness. Errors are pointed out. Common errors or points of difficulty are discussed during class.
Course Evaluation Questions
The course has helped me:
37. Enumerate the list of frequently used consistency models and cache coherence protocols.
38. Design a distributed scheduling algorithm that achieves certain criteria (e.g., load balancing).
39. Compare and contrast distributed file system abstractions
40. Solve synchronization problems in a distributed system
41. Compare and contrast distributed checkpointing failure recovery approaches
42. Evaluate the level of security and protection offered by a distributed system.
43. Develop my own implementation of a distributed system or component of a distributed system.
Grading
Grade is determined by performance on homeworks/programming assignments, and exams. (Weights are examples only; actual weights used may vary with instructor.) Final grades will be assigned according to the following scale:.
A typical weighting is:
Homework & Programs 50%
Examinations 50%
Possible Textbook
Distributed Systems: Concepts and Design
George Coulouris, Jean Dollimore, & Tim Kindberg
Second Edition, Addison-Wesley, 1994
Modern Operating Systems
Andrew S. Tanenbaum
Prentice Hall, 1992
Distributed Operating Systems Concepts and Design
Pradeep K. Sinha
IEEE Computer Society Press, ISBN - 0-7803-1119-1
Advanced Concepts in Operating Systems
Mukesh Singhal & Niranjan G. Shivaratri
McGraw Hill, 199x