Course Summary
This course builds on skills gained in preliminary programming courses in both C/C++ programming languages and gives you an in-depth understanding of designing and implementing operating systems. The course covers both theoretical and practical challenges encountered when designing, implementing, and using operating systems. We also evaluate trade-offs between conflicting objectives in large scale system design. Core topics include operating system structure, hardware interfaces and abstraction, process scheduling and dispatch, threading, synchronization, interprocess communications, memory management, file systems, system security and protection, and virtualisation.