awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
s-matyukevich avatar

s-matyukevich/raspberry-pi-os

0
View on GitHub↗
13,854 stars·1,343 forks·C·MIT·31 views

Raspberry Pi Os

This project is a bare-metal operating system developed for ARM64 architecture. It serves as a low-level implementation of kernel engineering, focusing on the fundamental construction of an OS from the hardware level up.

The system is distinguished by its comprehensive approach to ARM64 processor control, featuring a red-black tree task scheduler and a hierarchical page table system for virtual memory management. It implements a sophisticated privilege model that handles transitions between kernel and user modes, ensuring process isolation through address space splitting and exception level management.

The kernel covers a broad range of low-level capabilities, including hardware driver development for UART serial communication, interrupt routing across multiple processor cores, and the management of floating point units. It provides a complete process lifecycle, from executable program loading and task creation to context switching and workload balancing.

The project includes a recursive build system and supports execution within the QEMU emulator for testing and development without physical hardware.

Features

  • Paged Memory Management - Implements a hierarchical page table system to translate virtual addresses to physical memory and isolate process spaces.
  • Bare Metal Development - Implements a complete bare-metal operating system developed specifically for the ARM64 architecture from the hardware level up.
  • Hardware Initialization Routines - Sets up the stack pointer and clears the BSS section to prepare the system for main logic.
  • Interrupt-Driven Context Switching - Saves and restores processor state registers during exception entry and exit to enable task transitions.
  • Balanced Tree Schedulers - Employs a red-black tree to order runnable tasks and efficiently select the next process for execution.
  • Interrupt Handlers - Manages hardware interrupt lines by enabling/disabling them and reading pending registers to identify triggering devices.
  • Hardware Exception Handlers - Implements a vector table to route hardware interrupts and synchronous exceptions to predefined handler functions.
  • ARM64 Kernel Implementations - Implements a bare-metal operating system from the hardware level up specifically for the ARM64 architecture.
  • Hardware Drivers - Implements low-level hardware drivers for UART serial communication and system timers via register mapping.
  • Boot Protocol Implementations - Ensures the hardware is in a known state by disabling interrupts and the MMU before kernel execution.
  • Multicore Boot Coordination - Detects processor IDs during startup to restrict execution to the primary core and idle others.
  • Interrupt Handling - Directs hardware interrupts to specific CPU cores or broadcasts them across a multiprocessor system.
  • Paging and Context Switching - Manages the saving and restoring of CPU registers and stack pointers during transitions between kernel and user modes.
  • Process Schedulers - Manages task switching and process forking to allow multiple execution threads to share a processor.
  • Demand Paging - Implements on-demand physical page allocation by detecting translation faults via synchronous exceptions.
  • System Memory Allocation - Requests and releases fixed-size memory blocks for task stacks and internal kernel structures.
  • Process Address Space Allocation - Reserves physical memory pages and populates page table hierarchies to provide private virtual address spaces for user processes.
  • Process Lifecycle Managers - Manages the execution state of processes, including handling zombie states and freeing resources upon termination.
  • Task Control Block Management - Tracks process states, priorities, and register values to enable switching between concurrent execution threads.
  • Kernel-User Space Splitting - Divides the virtual address space into distinct kernel and user regions to protect memory.
  • Process Isolation - Ensures process isolation by running programs at the least privileged exception level.
  • System Call Dispatching - Provides a lookup table mechanism to route user-mode requests to specific kernel handler functions.
  • Interrupt Vector Handlers - Assigns specific handler functions and IRQ chips to hardware interrupt IDs for signal processing.
  • Multicore Processing Initialization - Sets up independent stacks and synchronization for multiple processor cores to enable parallel task execution.
  • Address Space Duplication - Creates complete copies of virtual memory and page tables to support the creation of new processes.
  • MMU Initialization - Initializes page tables and processor settings to enable the Memory Management Unit during the boot sequence.
  • Page Table Initializations - Creates the initial set of page table descriptors during boot to map the kernel image into virtual memory.
  • Per-CPU Runqueues - Balances workloads across multiple cores by maintaining independent task queues for each CPU.
  • Privilege Level Management - Transitions the processor through various execution levels to manage privilege and access rights.
  • Privileged Kernel Operations - Implements the execution of privileged tasks such as memory allocation and thread creation during synchronous exceptions.
  • Processor Mode Transitions - Implements transitions between different processor privilege levels using system registers and return instructions.
  • Processor Register Configurations - Sets up processor registers, configures endianness, and enables virtualization or host extensions.
  • Processor State Preservation - Saves general purpose registers and system state to the stack during exceptions to ensure context restoration.
  • System Exception Handling - Captures synchronous exceptions from unauthorized register access and distinguishes them from system calls.
  • Entry Points - Defines the exact physical memory location where the CPU starts executing the kernel binary.
  • Task Creation - Implements the ability to create new processes and threads by copying or sharing virtual memory and stacks.
  • Task Execution Tracking - Tracks runtime statistics and task priorities to determine when a running process should be preempted.
  • Task Priority Management - Assigns priority levels to tasks to ensure high-priority processes receive more processor time.
  • Task Scheduling Algorithms - Implements a scheduler that identifies the most eligible task to run using virtual runtime algorithms.
  • Task Selection Logic - Selects the next process to run based on task state and a priority-weighted counter system.
  • Task State Tracking - Tracks essential metadata such as execution state and kernel stack pointers for each task.
  • User Process Bootstrapping - Parses binary executables, loads them into memory, and transitions the processor from kernel to user mode.
  • Virtual Memory Management - Implements a hierarchical page table structure to translate virtual addresses to physical addresses and isolate process memory.
  • Register State Preservation - Saves and restores general purpose register states on the stack to handle interrupts and mode transitions.
  • Kernel Schedulers - Features a custom process scheduler using a red-black tree to manage task priorities and context switching.
  • System Tick Management - Configures a timer device to generate regular interrupts for uptime tracking and scheduler updates.
  • Red-Black Tree Schedulers - Distributes tasks across per-CPU runqueues and utilizes a red-black tree for efficient task selection.
  • Hardware Communication - Establishes hardware communication by configuring UART baud rates and selecting active controllers for system output.
  • Hardware Timer Controllers - Implements a hardware timer to generate periodic interrupts by comparing system counters against programmed values.
  • Serial Communication Interfaces - Configures UART hardware to implement serial communication for system output and character transmission.
  • Exception Level Management - Reads system registers to determine the current processor exception level during boot and runtime.
  • Executable Program Loading - Reads executable file formats from a file system to load and run user-space applications.
  • Floating Point State Management - Saves and restores floating point and SIMD registers during context switches to support advanced calculations.
  • Hardware Abstraction Layers - Provides a unified hardware abstraction layer allowing applications to access machine hardware through standardized system calls.
  • UART Debugging Interfaces - Provides a formatted print function via UART to display register values and variables for kernel troubleshooting.
  • Identity Mappings - Maps virtual addresses to identical physical addresses to allow CPU execution during memory transitions.
  • Inter-Core Interrupts - Enables information exchange between processor cores by sending interrupts via hardware mailboxes.
  • Interrupt Controllers - Controls the enablement and pending status of interrupts organized into hardware banks via interrupt controllers.
  • Interrupt Masking - Sets or clears mask bits to prevent race conditions by controlling the processor's ability to receive asynchronous interrupts.
  • Kernel Symbol Resolution - Extracts function and variable addresses from the binary to map memory addresses to human-readable symbols.
  • Linker Script Layouts - Uses linker scripts to define the exact physical memory placement of code and data sections for correct booting.
  • Linker Script Memory Layouts - Defines the mapping of object files into the output binary to ensure correct boot code placement.
  • Large Page Mappings - Maps continuous physical memory in 2 MB sections instead of 4 KB pages to reduce translation table levels.
  • MMU Parameter Configuration - Configures the Translation Control Register and Memory Attribute Indirection Register to define page sizes and memory attributes.
  • System Time Management - Maintains a tick counter and wall-clock time for scheduling precision and system events.
  • User Thread Cloning - Provides the ability to create new user-mode tasks by copying process state and assigning new stacks.
  • Hardware Emulators - Supports executing the kernel within a virtualized environment to facilitate development without physical hardware.
  • Emulator Porting Layers - Adapts kernel code and hardware access patterns to ensure compatibility with virtualized environments.
  • System Emulators - Simulates the boot process and hardware interactions to execute the kernel within a virtual machine.
  • Physical Register Mapping - Reads physical base addresses from a device tree to map them into virtual memory regions for hardware driver access.
  • Hardware Abstraction Layers - Utilizes a structured device tree format to abstract physical peripheral addresses into virtual memory regions.
  • Device Tree Configurations - Utilizes a structured device tree format to define memory maps and peripheral configurations without hardcoded addresses.
  • Containers and Virtualization - Operating system development for Raspberry Pi.
  • Infrastructure and Systems - A guide to building an OS for Raspberry Pi.
  • Operating Systems - Listed in the “Operating Systems” section of the Build Your Own X awesome list.
  • Operating Systems and Emulators - A tutorial for building an OS for Raspberry Pi.
  • Single Board Computing - Tutorial series for building an OS for Raspberry Pi.

Star history

Star history chart for s-matyukevich/raspberry-pi-osStar history chart for s-matyukevich/raspberry-pi-os

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Projects sharing features with Raspberry Pi Os

These projects share indexed features with Raspberry Pi Os. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • mit-pdos/xv6-publicmit-pdos avatar

    mit-pdos/xv6-public

    9,466View on GitHub↗

    xv6 is a Unix-like educational operating system designed for teaching kernel concepts. It is implemented as an instructional kernel for x86 and RISC-V architectures, featuring a virtual memory manager and support for symmetric multiprocessing. The system is designed to demonstrate core OS principles through a simplified re-implementation of Unix Version 6. It provides a controlled environment for studying system calls, trap handling, and process lifecycles. Its capability surface covers process management, including scheduling and context switching, and memory management via page tables for

    C
    View on GitHub↗9,466
  • hackclub/putting-the-you-in-cpuhackclub avatar

    hackclub/putting-the-you-in-cpu

    5,499View on GitHub↗

    This project is a collection of technical documentation and guides designed as a computer architecture explainer. It provides educational resources on how processors and operating systems execute programs, focusing on the fetch-execute cycle and the fundamental relationship between hardware and the kernel. The documentation covers a wide range of low-level system operations, including detailed guides on the executable and linkable binary format, virtual memory management, and kernel-level operations. It specifically explores the mechanics of CPU scheduling, preemptive multitasking, and the us

    MDXcpuelflinux
    View on GitHub↗5,499
  • ssherun/cs-xmind-noteSSHeRun avatar

    SSHeRun/CS-Xmind-Note

    10,263View on GitHub↗

    CS-Xmind-Note is a collection of structured mind maps and conceptual diagrams serving as a comprehensive knowledge base for computer science fundamentals. It functions as an academic reference and study guide, organizing core subjects into a visual mapping of interdependent technical concepts. The project utilizes an XMind-compatible schema to model complex domains through hierarchical nodes and relational concept mapping. This approach allows for the visual representation of technical layers, linking hardware specifications to software abstractions. The knowledge base covers several primary

    View on GitHub↗10,263
  • gyoogle/tech-interview-for-developergyoogle avatar

    gyoogle/tech-interview-for-developer

    17,417View on GitHub↗

    This project is a comprehensive technical interview preparation resource and computer science interview guide. It serves as an educational reference for developers to study core software engineering fundamentals and common coding patterns required for employment screenings. The repository provides detailed guides and references covering data structures and algorithms, networking and security, operating systems, and web development. It specifically focuses on the implementation and complexity analysis of sorting, searching, and graph algorithms. The material encompasses a wide breadth of comp

    Javaalgorithmcomputer-sciencecs
    View on GitHub↗17,417
Compare all 30 related projects→

Frequently asked questions

What does s-matyukevich/raspberry-pi-os do?

This project is a bare-metal operating system developed for ARM64 architecture. It serves as a low-level implementation of kernel engineering, focusing on the fundamental construction of an OS from the hardware level up.

What are the main features of s-matyukevich/raspberry-pi-os?

The main features of s-matyukevich/raspberry-pi-os are: Paged Memory Management, Bare Metal Development, Hardware Initialization Routines, Interrupt-Driven Context Switching, Balanced Tree Schedulers, Interrupt Handlers, Hardware Exception Handlers, ARM64 Kernel Implementations.

Which projects share features with s-matyukevich/raspberry-pi-os?

Projects with overlapping indexed features include: mit-pdos/xv6-public — xv6 is a Unix-like educational operating system designed for teaching kernel concepts. It is implemented as an… hackclub/putting-the-you-in-cpu — This project is a collection of technical documentation and guides designed as a computer architecture explainer. It… ssherun/cs-xmind-note — CS-Xmind-Note is a collection of structured mind maps and conceptual diagrams serving as a comprehensive knowledge… gyoogle/tech-interview-for-developer — This project is a comprehensive technical interview preparation resource and computer science interview guide. It… phil-opp/blog_os — This project is a freestanding kernel written in Rust that boots on x86 hardware without a standard library. It serves… tuhdo/os01 — This project is an educational resource and technical reference for building operating systems from scratch. It…