Understanding how operating systems manage hardware resources, provide abstractions for programs, and enable concurrent execution. Covers processes, threads, scheduling, memory management, file systems, and system-level programming.
Required:
- Computer Architecture - Understanding CPU and memory operation is essential for OS concepts
- Programming - Strong programming skills, especially in low-level languages
Recommended:
- Algorithms and Data Structures - Many OS components use sophisticated data structures
- C (Intermediate to Advanced) - Operating systems are typically implemented in C; understanding OS internals requires C proficiency
- Assembly (Beginner) - Helpful for understanding system calls and context switching
-
Operating Systems: Three Easy Pieces by Remzi and Andrea Arpaci-Dusseau
- Modern, readable treatment of OS concepts
- Structure divided into three conceptual pieces: virtualization, concurrency, persistence
- Excellent writing and exercises
- Level: Intermediate
- Available online
-
Operating System Concepts (Dinosaur Book) by Silberschatz, Galvin, and Gagne
- Comprehensive reference, though criticized for readability
- Level: Intermediate
- Use as supplementary reference if needed
- Institution: UC Berkeley
- Platform: Berkeley course site / YouTube
- URL: Course site
- Description: Comprehensive OS course covering processes, threads, synchronization, memory management, file systems
- Pairs well with OSTEP textbook
- OSTEP Homework - Simulation exercises and projects
- xv6 Operating System - Simple Unix-like OS for study and modification
-
Source: OSTEP homework and projects
-
Difficulty: Intermediate to Advanced
-
Estimated time: 100-200 hours
-
Topics: Process scheduling, concurrency, memory management, file systems
-
Source: xv6 labs
-
Difficulty: Advanced
-
Estimated time: 50-100 hours
-
Topics: Implementing OS features in a real (small) operating system
- Read and understand xv6 source code
- Implement additional features in xv6 (system calls, scheduling policies, file system enhancements)
- Complete OSTEP projects (simulation and coding)
[Personal notes and key insights can be added here during study]
- Completed OSTEP (or equivalent textbook)
- Watched Berkeley CS 162 lectures
- Finished OSTEP homework assignments
- Explored xv6 source code and labs
- Review and reinforcement