This course covers design principles and implementation issues of contemporary operating systems. The concepts are illustrated and tied to modern operating systems: Windows, Unix, Linux, Android. Topics include process management, memory management, file systems, distributed and multiprocessor systems, concurrent processes, scheduling, mutual exclusion, synchronization, deadlock prevention, avoidance, and detection; memory management paged and segmented allocation, the memory hierarchy, caching, virtual memory, page replacement algorithms, and their analyses, operating systems protection and security, embedded systems, client/server and clusters, virtualization and clouds. This course involves programming and operating system projects.
Prerequisites
CS 270 or its equivalent or CS 500 or its equivalent