# remzi-arpacidusseau/ostep-code

**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-code).**

4,127 stars · 1,518 forks · C

## Links

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

## Description

This project is a collection of educational simulations and code examples designed to illustrate core operating system concepts. It provides practical implementations of virtualization, concurrency, and persistence to demonstrate how an operating system manages hardware and software resources.

The repository includes simulators for CPU scheduling, memory virtualization via paging and segmentation, and file system architectures. It provides specific models for virtual-to-physical address translation and the distribution of processor time across competing tasks.

The simulations cover concurrency control through the use of locks, semaphores, and condition variables to manage shared data. Additional coverage includes the modeling of non-volatile data persistence through simulated block-level disk input and output operations.

## Tags

### DevOps & Infrastructure

- [OS Scheduling Simulations](https://awesome-repositories.com/f/devops-infrastructure/automation-orchestration/task-execution-frameworks/task-job-management/task-schedulers/os-scheduling-simulations.md) — Provides simulations specifically modeling operating system processor task management and time-sharing.
- [OS Process Execution](https://awesome-repositories.com/f/devops-infrastructure/background-job-processing/os-process-execution.md) — Implements the spawning and management of operating system processes to demonstrate task execution and lifecycle management.

### Education & Learning Resources

- [Concurrency Control Examples](https://awesome-repositories.com/f/education-learning-resources/concurrency-control-examples.md) — Provides code demonstrations of locks, semaphores, and condition variables used to coordinate shared data.
- [Operating System Concepts](https://awesome-repositories.com/f/education-learning-resources/operating-system-concepts.md) — Provides comprehensive educational material and simulations on operating system internals and architecture.

### Operating Systems & Systems Programming

- [C System Simulations](https://awesome-repositories.com/f/operating-systems-systems-programming/c-system-simulations.md) — Implements core operating system concepts using low-level C primitives to manage memory and process execution.
- [Disk Storage Internals](https://awesome-repositories.com/f/operating-systems-systems-programming/disk-storage-internals.md) — Provides a technical simulation of how data persists on hardware through block-level disk storage and file systems.
- [Mutexes and Locks](https://awesome-repositories.com/f/operating-systems-systems-programming/mutexes-and-locks.md) — Implements mutual exclusion primitives such as mutexes and locks to synchronize access to shared resources.
- [Page Table Translators](https://awesome-repositories.com/f/operating-systems-systems-programming/paged-memory-management/virtual-address-translators/page-table-translators.md) — Provides mechanisms for converting logical addresses to physical addresses using simulated page tables.
- [Process Execution Simulations](https://awesome-repositories.com/f/operating-systems-systems-programming/process-execution-simulations.md) — Creates and synchronizes processes using a basic interface to demonstrate how operating systems handle task execution. ([source](https://github.com/remzi-arpacidusseau/ostep-code/tree/master/cpu-api/))
- [CPU Scheduling Simulations](https://awesome-repositories.com/f/operating-systems-systems-programming/system-time-virtualization/cpu-scheduling-simulations.md) — Manages process scheduling and execution models to distribute a single processor's time across multiple competing tasks. ([source](https://cdn.jsdelivr.net/gh/remzi-arpacidusseau/ostep-code@master/README.md))
- [Task Scheduling Algorithms](https://awesome-repositories.com/f/operating-systems-systems-programming/task-scheduling-algorithms.md) — Implements logic to determine which runnable task should execute next on a processor using various scheduling algorithms.
- [Simulated Virtual Memory Managers](https://awesome-repositories.com/f/operating-systems-systems-programming/virtual-memory-management/simulated-virtual-memory-managers.md) — Implements a simulated environment that manages page tables, handles page faults, and translates virtual addresses.
- [Persistence Simulations](https://awesome-repositories.com/f/operating-systems-systems-programming/persistence-simulations.md) — Simulates disk input and output and file system architectures to illustrate data storage on non-volatile media.

### Software Engineering & Architecture

- [Concurrency Control Primitives](https://awesome-repositories.com/f/software-engineering-architecture/concurrency-control-primitives.md) — Coordinates shared data across multiple execution flows using locks, semaphores, and condition variables. ([source](https://cdn.jsdelivr.net/gh/remzi-arpacidusseau/ostep-code@master/README.md))

### Data & Databases

- [Data Persistence and Storage](https://awesome-repositories.com/f/data-databases/data-engineering-infrastructure/data-persistence-storage.md) — Implements architectures dedicated to the durable storage and long-term management of digital information through disk simulation. ([source](https://cdn.jsdelivr.net/gh/remzi-arpacidusseau/ostep-code@master/README.md))
- [File System Simulators](https://awesome-repositories.com/f/data-databases/file-storage-systems/file-system-simulators.md) — Implements simulations that model file system structures to verify on-disk data integrity for educational purposes.

### Programming Languages & Runtimes

- [Condition Variables](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/concurrency-models/concurrency/task-orchestration-frameworks/thread-pools/condition-variables.md) — Provides synchronization primitives that allow threads to wait for specific state changes or signals from other threads.
