This course will cover the basic principles of operating systems: addressing modes, indexing, relative addressing, indirect addressing, stack maintenance; implementation of multitask systems; control and coordination of tasks, deadlocks, synchronization, mutual exclusion; storage management, segmentation, paging, virtual memory; protection, sharing, access control; file systems; resource management; evaluation and prediction of performance. Students are expected to spend at least three hours per week gaining hands-on experience in using and modifying a small operating system.

In this graduate introductory course of operating systems, we will examine how modern operating systems are built and implemented. Extensive implementation experience will be gained by coding, testing, and benchmarking key components of a small operating system. A by-product of programming hardware-dependent kernel features in assembly is achieving significant familiarity with x86 hardware, a dominant platform of commodity computing systems. The topics covered in the course include: evolution of operating systems and computer architectures, process management, memory management, virtual memory, file systems, I/O subsystems and device management, virtualization and security.

The course comprises both lecture-format classes to discuss course topics and practice/study/observe (PSO) sessions to give hands-on experience with the topics covered in lecture.

Class resources