Operating systems are a fundamental part of any computer system and common to virtually every application. This course surveys conceptual design and implementation issues of such complex programs, starting with the most basic notions of operating systems (e.g., the difference between the kernel and user modes, system calls) and evolving to develop key approaches to operating systems design and implementation. The course delves into the four main pillars of operating systems: process management (i.e., concept of process, multithreaded programming, process scheduling, synchronization, and deadlocks), memory management (i.e., memory-management strategies, virtual memory), storage management (i.e., file systems interface and implementation, mass-storage structure, and I/O systems), and operating systems protection and security. In addition to a conceptual view of operating systems, the course exposes students to the implications of some techniques through a hands-on approach.
- Algorithms & Data Structures, Computer Architecture, Programming Fundamentals 1, Programming Fundamentals 2, Systems Programming
- Operating System Concepts 9th Edition, A. Silberschatz, P. B. Galvin, and G. Gagne, Wiley, 2012