CS703 - Advanced Operating Systems
Course Page
Q & A
Course Category: Computer Science/Information Technology
Course Level: Graduate
Credit Hours: 3
Pre-requisites: CS201 CS604

Course Synopsis

This is a graduate level course. The objectives of the course are to explore the design principles of computer operating systems and to emphasize on implementation details of various sub-modules of operating systems. The course will focus on the engineering and performance trade-offs in the design of operating systems. The purpose will be to teach not only what operating systems are and how they work today, but also why they are designed the way they are and how they are likely to evolve in the future. The emphasize will be on the practical aspects of the topics through the case study of Linux kernel as an example of a commercial operating system. The course will cover programming aspects through some programming assignments. It will also introduce the state of the art OS research topics through a few research paper reading assignments.

Course Learning Outcomes

Upon successful completion of the course the students would be able to:
  • Understand in great detail how and why different parts of an operating system work.
  • Understand the engineering tradeoffs involved in the design of various sub-modules of an operating system.
  • Understand how operating systems are structured, what are alternative OS architectures and how different modules interact together to form a cohesive and complex system.
  • Write non-trivial programs in C or C++ that would invoke OS services via system calls in an efficient manner.
  • Understand various contemporary research issues in operating systems e.g. security and protection, efficient memory management, I/O buffering, device handling, faster and more efficient file systems and OS architectures.

Course Contents

Introduction, Operating System: top-down and bottom up views, design issues, modules and components, services and system calls, structure and organization. Executable file formats, Static Linking, Dynamic linking, Loading programs into memory, Anatomy of a Process, Exceptional control flow, Context switching, Process related system calls, Threads, Concurrency and synchronization: Race conditions, Mutual exclusion and problems arising from them, Locks, semaphores and condition variables, Design of Inter-process communication mechanisms, Readers/writers and producer/consumer problems, Re-entrant code and thread-safe libraries, Deadlock, Design alternatives for highly concurrent servers (research topic). CPU scheduling: Scheduling policies and algorithms, Scheduling algorithm comparison, Real-time and multi-processor scheduling, Linux case study. Dynamic memory management: Internal design alternatives for malloc and free routines, Garbage collection. OS memory management: Memory protection, Program relocation, Memory partitioning techniques, Virtual memory, Paging and segmentation, TLB and cache management. File systems: Naming issues, Design alternatives for file systems, Example file systems and their comparison. I/O management: Memory mapped Vs Direct I/O, Interrupt driven Vs Polled I/O, Device controllers and device drivers, Naming issues, OS I/O architecture, Buffering techniques, Disk devices and their management. Timer management in OS, Event notification mechanisms, UNIX signals, Security and protection: Security aspects in operating systems, Authentication, Authorization, Accounting, Security domains and security models, Protection against worms and viruses, Protection against buffer overflow attacks, Windows case study, Linux case study, Java Security, State of the art OS research topics.

Course Related ‌Links

Useful link for course related material, taught by Dr. Karsten Schwan at Georgia Institute of Technology
ful link for course related material, taught by Clifford Neuman at University of Southern California
Good Material available
Course Related valuable link provided by University of New South Wales, Australia
Useful link for course related material, taught by Andy Wang at Florida State University
Useful link for course related material, taught by David Andersen at Carnegie Mellon University
Course Related valuable link provided by University of Wisconsin Madison
Course Instructor

Mr. Farhan Zaidi
MS Computer Science
University of Southern California, USA

Modern Operating Systems by Tanenbaum

Operating Systems Internals and Design Principles by William Stallings

Operating Systems by Gary Nutt

Computer Systems: A programmer’s perspective
by Randal E. Bryant & David R.