An exploration of design and implementation issues for modern operating systems. Subjects include key design issues in implementing an operating system, such as memory management, inter-core synchronization, scheduling, protection, inter-process communication, device drivers, and file systems, paying particular attention to system designs that differ from the traditional monolithic arrangements of Unix/Linux and Windows. Prerequisite: Upper-division standing; additional prerequisites vary with the topic.

Undergraduate Program