This course provides the overview of computer system and the operating system, the concepts of process management, memory management, storage management, protection and security issues, and distributed systems.
This course builds on skills gained in preliminary programming courses in both Java and 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, inter-process communications, memory management, file systems, system security and protection, and virtualization.