# mit-pdos/xv6-riscv

**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/mit-pdos-xv6-riscv).**

9,934 stars · 4,042 forks · C · NOASSERTION

## Links

- GitHub: https://github.com/mit-pdos/xv6-riscv
- Homepage: https://pdos.csail.mit.edu/6.1810
- awesome-repositories: https://awesome-repositories.com/repository/mit-pdos-xv6-riscv.md

## Description

xv6-riscv is a simplified Unix-like teaching operating system designed for the study of kernel design and hardware interaction. It provides a low-level RISC-V kernel implementation that serves as a bootable system image for execution and debugging within a virtual machine or emulator.

The project focuses on educational instruction regarding the RISC-V architecture. It enables the study of operating system concepts through a minimal kernel that implements process management and memory handling.

The system covers core kernel operations including multiprocessor resource management and the implementation of a file system. It includes a shell for command execution and a suite of utilities for file, directory, and text data processing.

The project includes a build system for generating kernel images and user-space binaries using a RISC-V cross-compiler toolchain.

## Tags

### Development Tools & Productivity

- [Monolithic Kernels](https://awesome-repositories.com/f/development-tools-productivity/platforms-runtimes-language-services/development-platforms/operating-system-environments/operating-systems/monolithic-kernels.md) — Implements a monolithic kernel architecture where all core OS services run in a single privileged binary.
- [Kernel Build Systems](https://awesome-repositories.com/f/development-tools-productivity/cross-platform-build-systems/kernel-build-systems.md) — Ships a build system for compiling the kernel source into a bootable binary image. ([source](https://github.com/mit-pdos/xv6-riscv/blob/riscv/Makefile))
- [Shell Command Execution](https://awesome-repositories.com/f/development-tools-productivity/shell-command-execution.md) — Includes a shell capable of launching programs and managing process lifecycles. ([source](https://github.com/mit-pdos/xv6-riscv/tree/riscv/user))

### Operating Systems & Systems Programming

- [RISC-V Kernel Implementations](https://awesome-repositories.com/f/operating-systems-systems-programming/risc-v-kernel-implementations.md) — Implements a low-level RISC-V kernel providing essential process and memory management.
- [File System Architectures](https://awesome-repositories.com/f/operating-systems-systems-programming/file-system-architectures.md) — Implements a custom file system architecture using fixed-size blocks and inodes for data organization.
- [Kernel Development](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/kernel-development.md) — Offers a complete workflow for building and testing a RISC-V kernel from source.
- [Operating System Kernels](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/operating-system-kernels.md) — Implements a minimal kernel designed for educational study of hardware and process management.
- [Trap-Based Interfaces](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/system-calls/system-call-mapping/system-call-dispatching/trap-based-interfaces.md) — Provides a system call interface based on hardware traps for transitioning from user mode to kernel mode.
- [Memory Protection Managers](https://awesome-repositories.com/f/operating-systems-systems-programming/memory-protection-managers.md) — Provides hardware-enforced memory protection using page tables to isolate user processes from the kernel.
- [Emulator Target Images](https://awesome-repositories.com/f/operating-systems-systems-programming/virtualization-emulation/hardware-emulators/hardware-interface-emulators/emulator-target-images.md) — Provides a bootable RISC-V system image specifically designed for execution in virtual machines.
- [System Emulators](https://awesome-repositories.com/f/operating-systems-systems-programming/virtualization-emulation/hardware-emulators/hardware-interface-emulators/system-emulators.md) — Provides a target for system emulators to analyze the interaction between RISC-V hardware and the kernel.
- [Virtual Machines](https://awesome-repositories.com/f/operating-systems-systems-programming/virtualization-emulation/virtualization-platforms/virtualization-technologies/virtual-machines.md) — Designed to be executed within RISC-V virtual machines and emulators. ([source](https://github.com/mit-pdos/xv6-riscv/blob/riscv/README))
- [Disk Image File System Management](https://awesome-repositories.com/f/operating-systems-systems-programming/disk-image-file-system-management.md) — Includes tooling for generating bootable disk images containing the formatted file system. ([source](https://github.com/mit-pdos/xv6-riscv/tree/riscv/mkfs))
- [Bootable Image Creation](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/boot-startup-management/disk-image-bootloaders/bootable-image-creation.md) — Provides utilities to create and format disk images for the operating system. ([source](https://github.com/mit-pdos/xv6-riscv/blob/riscv/Makefile))
- [Slab Allocators](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/dynamic-memory-allocation/slab-allocators.md) — Implements slab-style memory allocation using fixed-size chunks to prevent fragmentation within the kernel.
- [System Resource Management](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/system-resource-management.md) — Implements functions for managing system resources across multiprocessor hardware. ([source](https://github.com/mit-pdos/xv6-riscv/blob/riscv/README))
- [Remote Debugging Protocols](https://awesome-repositories.com/f/operating-systems-systems-programming/remote-debugging-protocols.md) — Supports remote kernel debugging via protocols that allow memory inspection and breakpoint management. ([source](https://github.com/mit-pdos/xv6-riscv/blob/riscv/.gdbinit.tmpl-riscv))

### Data & Databases

- [Filesystem Implementations](https://awesome-repositories.com/f/data-databases/data-engineering-infrastructure/data-persistence-storage/filesystem-abstractions/filesystem-implementations.md) — Provides a simplified file system implementation for studying on-disk data organization.

### Education & Learning Resources

- [Teaching Operating Systems](https://awesome-repositories.com/f/education-learning-resources/operating-system-concepts/teaching-operating-systems.md) — Provides a simplified Unix-like kernel specifically designed for studying operating system concepts.
- [Operating Systems Study](https://awesome-repositories.com/f/education-learning-resources/operating-systems-study.md) — Serves as an educational resource for studying the fundamentals of operating system design.

### Software Engineering & Architecture

- [Kernel Synchronization Primitives](https://awesome-repositories.com/f/software-engineering-architecture/concurrency-control/kernel-synchronization-primitives.md) — Utilizes spinlocks as low-level synchronization primitives to manage shared data across multiple CPU cores.
- [Kernel](https://awesome-repositories.com/f/software-engineering-architecture/resource-management/kernel.md) — Implements core kernel functions for multiprocessor resource handling and process scheduling.

### Programming Languages & Runtimes

- [User-Space Toolchains](https://awesome-repositories.com/f/programming-languages-runtimes/user-space-toolchains.md) — Provides a toolchain to compile user-space programs linked against specific kernel memory layouts. ([source](https://github.com/mit-pdos/xv6-riscv/blob/riscv/Makefile))
