# remzi-arpacidusseau/ostep-projects

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/remzi-arpacidusseau-ostep-projects).**

5,560 stars · 1,510 forks · C

## Links

- GitHub: https://github.com/remzi-arpacidusseau/ostep-projects
- awesome-repositories: https://awesome-repositories.com/repository/remzi-arpacidusseau-ostep-projects.md

## Description

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.

## Tags

### Education & Learning Resources

- [Course Projects](https://awesome-repositories.com/f/education-learning-resources/operating-system-concepts/teaching-operating-systems/course-projects.md) — Serves as the primary collection of academic programming projects for an operating systems course.
- [Operating Systems Study](https://awesome-repositories.com/f/education-learning-resources/operating-systems-study.md) — Provides educational projects for building core OS components like schedulers, memory managers, and file systems.
- [Concurrent](https://awesome-repositories.com/f/education-learning-resources/programming-projects/concurrent.md) — Includes concurrent programming projects implementing multi-threaded MapReduce, thread pools, and parallel compression.

### Part of an Awesome List

- [Command Line Shells](https://awesome-repositories.com/f/awesome-lists/devtools/command-line-shells.md) — Builds a command-line shell that executes programs and manages input/output redirection. ([source](https://github.com/remzi-arpacidusseau/ostep-projects#readme))
- [Parallel Compression Tools](https://awesome-repositories.com/f/awesome-lists/devtools/file-compression/parallel-compression-tools.md) — Implements parallel file compression that speeds up operations by using multiple threads. ([source](https://github.com/remzi-arpacidusseau/ostep-projects#readme))

### Data & Databases

- [File System Simulators](https://awesome-repositories.com/f/data-databases/file-storage-systems/file-system-simulators.md) — Simulates file system structures and verifies on-disk data integrity for educational purposes.
- [MapReduce Processing Engines](https://awesome-repositories.com/f/data-databases/mapreduce-processing-engines.md) — Provides a MapReduce parallel processing framework that divides data processing into map and reduce stages.

### DevOps & Infrastructure

- [Shell Implementations](https://awesome-repositories.com/f/devops-infrastructure/background-job-processing/os-process-execution/shell-backgrounding/shell-implementations.md) — Builds a Unix shell implementation supporting job control, pipes, redirection, and background execution. ([source](https://github.com/remzi-arpacidusseau/ostep-projects#readme))
- [Lottery Schedulers](https://awesome-repositories.com/f/devops-infrastructure/task-scheduling-policies/cpu-scheduling-policies/lottery-schedulers.md) — Implements a lottery-based proportional-share CPU scheduler using randomized ticket allocation.

### Operating Systems & Systems Programming

- [File System Integrity Checkers](https://awesome-repositories.com/f/operating-systems-systems-programming/disk-image-file-system-management/file-system-integrity-checkers.md) — Ships a file system integrity checker that scans disk images for structural errors and inconsistencies.
- [Educational Kernel Projects](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/kernel-development/educational-kernel-projects.md) — Contains kernel development projects that add threading, scheduling, and memory protection to a simulated OS.
- [Lottery Scheduling Algorithms](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/operating-system-kernels/process-schedulers/lottery-scheduling-algorithms.md) — Implements lottery-based process scheduling algorithms that allocate CPU time using randomized tickets.
- [Educational Heap Allocators](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/dynamic-memory-allocation/educational-heap-allocators.md) — Implements a dynamic heap memory allocator as a programming project for learning memory management. ([source](https://github.com/remzi-arpacidusseau/ostep-projects#readme))
- [Dynamic Heap Allocators](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/dynamic-memory-allocation/memory-allocation-tracers/heap-allocation-strategies/dynamic-heap-allocators.md) — Implements a dynamic heap memory allocator that manages allocation and deallocation of memory blocks.
- [Page Table Translators](https://awesome-repositories.com/f/operating-systems-systems-programming/paged-memory-management/virtual-address-translators/page-table-translators.md) — Simulates page table walks and virtual-to-physical address translation in a controlled environment.
- [File System Implementation Projects](https://awesome-repositories.com/f/operating-systems-systems-programming/system-administration-maintenance/file-system-management/file-systems/file-system-implementation-projects.md) — Provides file system implementation projects including integrity checkers and distributed simulations.
- [Command-Line Interpreters](https://awesome-repositories.com/f/operating-systems-systems-programming/terminal-command-line-environments/shells-scripting/command-line-interpreters.md) — Implements a command-line interpreter with job control, pipes, and redirection for interactive shell functionality.
- [Kernel Emulation Environments](https://awesome-repositories.com/f/operating-systems-systems-programming/user-space-containers/kernel-emulation-environments.md) — Provides a simulated operating system environment that emulates kernel components in user-space for safe experimentation.
- [Simulated Address Translators](https://awesome-repositories.com/f/operating-systems-systems-programming/virtual-memory-management/simulated-address-translators.md) — Implements a virtual address translation simulator that walks page tables and handles page faults.
- [Simulated Virtual Memory Managers](https://awesome-repositories.com/f/operating-systems-systems-programming/virtual-memory-management/simulated-virtual-memory-managers.md) — Provides a virtual memory manager simulation that handles page tables, faults, and address translation. ([source](https://github.com/remzi-arpacidusseau/ostep-projects#readme))
- [Educational Kernel Thread Implementations](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-process-internals/kernel-thread-distinctions/educational-kernel-thread-implementations.md) — Includes a kernel thread implementation project that adds multi-threading support to a simulated OS. ([source](https://github.com/remzi-arpacidusseau/ostep-projects#readme))
- [Educational Memory Protection Features](https://awesome-repositories.com/f/operating-systems-systems-programming/memory-protection-managers/educational-memory-protection-features.md) — Implements virtual memory protection features including null-pointer detection and read-only regions. ([source](https://github.com/remzi-arpacidusseau/ostep-projects#readme))

### Programming Languages & Runtimes

- [Systems Programming Exercises](https://awesome-repositories.com/f/programming-languages-runtimes/c-programming-tools/systems-programming-exercises.md) — Provides systems programming exercises that reimplement Unix tools to develop C and system call proficiency.
- [Thread Pools](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/concurrency-models/concurrency/task-orchestration-frameworks/thread-pools.md) — Implements a multi-threaded worker pool that manages reusable threads for concurrent task processing.

### Software Engineering & Architecture

- [Multi-Threaded Programming Exercises](https://awesome-repositories.com/f/software-engineering-architecture/concurrent-programming-patterns/multi-threaded-programming-exercises.md) — Provides multi-threaded programming exercises that teach synchronization and parallel workload handling.
- [Thread-Per-Connection Web Servers](https://awesome-repositories.com/f/software-engineering-architecture/thread-per-connection-models/thread-per-connection-web-servers.md) — Creates a multi-threaded HTTP server that handles multiple client requests simultaneously. ([source](https://github.com/remzi-arpacidusseau/ostep-projects#readme))

### System Administration & Monitoring

- [Kernel Schedulers](https://awesome-repositories.com/f/system-administration-monitoring/resource-scheduling/kernel-schedulers.md) — Assigns CPU time to processes using randomized ticket-based allocation for proportional-share scheduling. ([source](https://github.com/remzi-arpacidusseau/ostep-projects#readme))

### Development Tools & Productivity

- [Unix Tool Reimplementations](https://awesome-repositories.com/f/development-tools-productivity/command-line-tooling/unix-tool-reimplementations.md) — Reimplements common Unix command-line tools such as cat, grep, zip, and unzip for systems programming practice. ([source](https://github.com/remzi-arpacidusseau/ostep-projects#readme))
