This course examines fundamental issues in operating system design and implementation. The course covers the tradeoffs that can be made between performance and functionality during the design and implementation of an operating system. Particular emphasis will be given to the major OS subsystems: process management (processes, threads, CPU scheduling, synchronization, and deadlock), memory management (segmentation and paging), file systems, and I/O management.

Course Objectives:
•    Learn basic principles and components of an operating system
•    Learn and be familiar with the notion of processes and inter-process communication
•    Understand CPU scheduling, deadlock detection and avoidance
•    Understand how memory and I/O are managed, and implementation of file systems