This is a collection of academic programming projects that accompany an operating systems textbook, designed to teach core OS concepts through hands-on implementation. The projects span the major subsystems of an operating system, including process scheduling, memory management, file systems, and concurrency, with students building components from scratch in a simulated environment.
The projects are structured to cover the full range of OS internals, from low-level kernel development to user-space system programming. Students implement lottery-based CPU schedulers, dynamic heap memory allocators, virtual address translation simulators, and file system integrity checkers. The collection also includes concurrent programming exercises such as multi-threaded MapReduce frameworks, thread pools, and parallel file compression, alongside reimplementations of standard Unix command-line tools.
The assignments progress from building a command-line shell with job control to modifying kernel threads and implementing memory protection features. Each project is self-contained and designed to run in a simulated operating system environment, allowing safe experimentation with low-level mechanisms without requiring real hardware or privileged access. The documentation provides the project specifications and starter code needed to complete each assignment.