CS 441/541

From CS Wiki
Jump to: navigation, search

Advanced Operating Systems

Catalog Description: Principles of contemporary operating systems for network and distributed computer systems; sequential processes, scheduling, process synchronization, device management, file systems, memory management and protection and security.

Cross Listed: as ECE 541

Total Credits: 3

Course Coordinator: Robert Rinker

URL: http://www2.cs.uidaho.edu/~rinker/cs541/index.html

Prereq: CS 240

Textbook: Randy Chow and Theodore Johnson, Distributed Operating Systems and Algorithms, Addison Wesley Longman, 1998. ISBN 0-201-49838-3.

Prerequisites by Topic:

  • Process management
  • Memory management
  • Synchronization
  • Files and files systems

Major Topics Covered

  • Distributed systems: definitions and concepts. (2 hours)
  • Communication concepts: protocols, RPC, message and stream communication. (6 hours)
  • Processes: threads, client-server model, code migration, and scheduling. (6 hours)
  • Naming: methods for naming, name resolution, and name spaces. Mobile entities. (4 hours)
  • Synchronization : Real clocks, logical clocks, centralized vs distributed mutual exclusion, election algorithms, and transaction-oriented operations (6 hours)
  • Consistency and replication: consistency models, distribution protocols, and consistency protocols. (6 hours)
  • Fault tolerance: basic concepts – the Byzantine Generals problem and extensions, agreement algorithms, reliable communication concepts, transaction-oriented commit, and recovery schemes. (6 hours)
  • Distributed Files systems: NFS, Coda, and object-based systems. (4 hours)

Course Outcomes

  1. Be able to describe different protocols and their use
  2. Understand how communicating processes are modeled, specified and scheduled.
  3. Understand name space conventions and methods for naming.
  4. Analyze a system for consistency and replication.
  5. Understand the issues of clock domains, clock synchronization
  6. Understand basic concepts of fault tolerance.
  7. Be able to analyze a system for fault tolerance and specify design changes to increase fault tolerance.
  8. Understand the architecture and operations of distributed file systems.