CS-620 Operating Systems Design
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