# yourtion/30daymakeos

**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/yourtion-30daymakeos).**

6,412 stars · 1,463 forks · C · NOASSERTION

## Links

- GitHub: https://github.com/yourtion/30dayMakeOS
- Homepage: https://github.com/yourtion/YOS
- awesome-repositories: https://awesome-repositories.com/repository/yourtion-30daymakeos.md

## Topics

`asm` `boot` `c` `cc` `diy` `fifo` `gdt` `idt` `linux` `nas` `nasa` `operating-system` `os` `osask` `osx` `qemu` `stdlib`

## Description

30dayMakeOS is an educational hobby operating system project designed for the x86 architecture. It implements a monolithic kernel and a custom bootloader that transitions the CPU from real mode to 32-bit protected mode to enable flat memory addressing.

The project focuses on low-level system development, featuring a custom graphics driver for direct pixel-buffer rendering and window management without an existing operating system. It includes an x86 bootloader that loads the kernel from disk into memory.

The system covers core kernel capabilities including round-robin task scheduling for process multitasking, page-table memory isolation, and bitmap-based memory allocation. It also implements hardware interrupt handling via an interrupt descriptor table, a file system for disk storage, and a command-line interface for user interaction.

## Tags

### Education & Learning Resources

- [OS Internals Education](https://awesome-repositories.com/f/education-learning-resources/framework-internals-studies/os-internals-education.md) — Provides a step-by-step implementation of an operating system for educational purposes, focusing on kernel internals.

### Operating Systems & Systems Programming

- [Kernel Development](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/kernel-development.md) — Provides a full implementation of a monolithic kernel from scratch, including scheduling, memory, and interrupts.
- [Boot Sector Loaders](https://awesome-repositories.com/f/operating-systems-systems-programming/boot-sector-loaders.md) — Includes a custom bootloader that reads the first 512 bytes from disk into memory to start the OS.
- [CPU Schedulers](https://awesome-repositories.com/f/operating-systems-systems-programming/cpu-schedulers.md) — Implements a kernel-level CPU scheduler to enable concurrent execution of multiple processes. ([source](https://github.com/yourtion/30dayMakeOS))
- [Graphics Drivers](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-interfacing-drivers/hardware-drivers/graphics-drivers.md) — Implements a kernel-level graphics driver for direct pixel manipulation and window rendering.
- [Input Interrupt Handling](https://awesome-repositories.com/f/operating-systems-systems-programming/interrupt-driven-signal-handlers/input-interrupt-handling.md) — Configures interrupt descriptor tables and buffers to process keyboard and mouse signals.
- [Disk Image Bootloaders](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/boot-startup-management/disk-image-bootloaders.md) — Implements a custom bootloader to load the kernel from disk into memory.
- [x86 Bootloaders](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/boot-startup-management/disk-image-bootloaders/x86-bootloaders.md) — Includes a custom x86 bootloader that loads the kernel and transitions the CPU from real mode to 32-bit protected mode.
- [Input Device Drivers](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/boot-startup-management/multi-boot-usb-utilities/input-device-drivers.md) — Provides a driver layer that processes electrical signals from keyboards and mice to enable interaction. ([source](https://cdn.jsdelivr.net/gh/yourtion/30daymakeos@master/README.md))
- [Interrupt Handling](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/interrupt-handling.md) — Implements a system that responds to external hardware signals by executing corresponding service routines. ([source](https://cdn.jsdelivr.net/gh/yourtion/30daymakeos@master/README.md))
- [Low-Level System Operations](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/memory-allocation-libraries/low-level-system-operations.md) — Implements low-level memory management through page tables and bitmap allocators.
- [System Call Interfaces](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/system-calls/system-call-mapping/system-call-interfaces.md) — Implements a software interrupt mechanism allowing user applications to request kernel services for file I/O and window management.
- [Interrupt Vector Handlers](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/system-programming-primitives/system-programming/hardware-interfaces/pci-bus-management/interrupt-controllers/interrupt-vector-handlers.md) — Configures an interrupt descriptor table to map hardware signals to specific handler functions for input events.
- [Hardware-Based Memory Protection](https://awesome-repositories.com/f/operating-systems-systems-programming/memory-protection-managers/memory-protection-engineering/hardware-based-memory-protection.md) — Uses hardware-level privilege and memory boundaries to restrict application access to critical system memory. ([source](https://github.com/yourtion/30dayMakeOS))
- [Paged Memory Management](https://awesome-repositories.com/f/operating-systems-systems-programming/paged-memory-management.md) — Implements page-table based memory paging to ensure strict isolation between concurrent processes.
- [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 page tables to ensure process isolation.
- [Processor Mode Transitions](https://awesome-repositories.com/f/operating-systems-systems-programming/processor-mode-transitions.md) — Transitions the CPU from 16-bit real mode to 32-bit protected mode to enable flat memory addressing.
- [x86 Kernel Implementations](https://awesome-repositories.com/f/operating-systems-systems-programming/x86-kernel-implementations.md) — Provides a complete low-level kernel implementation specifically targeting the x86 architecture.
- [Bare-Metal Graphics](https://awesome-repositories.com/f/operating-systems-systems-programming/bare-metal-runtimes/bare-metal-graphics.md) — Writes low-level C routines to render pixels and windows directly to the screen.
- [Disk Image File System Management](https://awesome-repositories.com/f/operating-systems-systems-programming/disk-image-file-system-management.md) — Implements a file system for performing core storage operations and organizing directories on a physical disk. ([source](https://cdn.jsdelivr.net/gh/yourtion/30daymakeos@master/README.md))
- [Executable Program Loading](https://awesome-repositories.com/f/operating-systems-systems-programming/executable-program-loading.md) — Provides mechanisms for parsing and loading executable user-space programs into memory. ([source](https://github.com/yourtion/30dayMakeOS))
- [Bitmap Allocators](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/dynamic-memory-allocation/bitmap-allocators.md) — Uses a bitmap-based approach to track and manage physical memory blocks for dynamic allocation.
- [System Memory Allocation](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/dynamic-memory-allocation/system-memory-allocation.md) — Provides a system-level memory allocation layer to organize resources for process execution. ([source](https://cdn.jsdelivr.net/gh/yourtion/30daymakeos@master/README.md))
- [Bitmap Allocators](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/dynamic-memory-allocation/system-memory-allocation/bitmap-allocators.md) — Implements a bitmap-based memory allocator to track available and used physical memory blocks.

### Part of an Awesome List

- [CPU Task Scheduling and Preemption](https://awesome-repositories.com/f/awesome-lists/devops/tasks-and-scheduling/cpu-task-scheduling-and-preemption.md) — Implements a round-robin task scheduler to ensure fair CPU distribution across active processes.
- [Round-Robin Schedulers](https://awesome-repositories.com/f/awesome-lists/devops/tasks-and-scheduling/cpu-task-scheduling-and-preemption/round-robin-schedulers.md) — A scheduler that ensures fair CPU distribution by assigning fixed time slices to processes in a circular order.

### 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 services operate in kernel space.
- [Command Line Interfaces](https://awesome-repositories.com/f/development-tools-productivity/command-line-interfaces.md) — Implements a terminal-based command-line interface for executing built-in system utilities. ([source](https://github.com/yourtion/30dayMakeOS))
- [System Command Interfaces](https://awesome-repositories.com/f/development-tools-productivity/terminal-shell-cli/system-command-interfaces.md) — Provides a system interface for launching applications and interacting with the kernel via a command line. ([source](https://cdn.jsdelivr.net/gh/yourtion/30daymakeos@master/README.md))

### Graphics & Multimedia

- [Graphics Rendering Engines](https://awesome-repositories.com/f/graphics-multimedia/graphics-rendering-engines.md) — Implements a low-level rendering engine to display pixels, text, and windows directly to the screen. ([source](https://cdn.jsdelivr.net/gh/yourtion/30daymakeos@master/README.md))

### Software Engineering & Architecture

- [Operational Mode Switching](https://awesome-repositories.com/f/software-engineering-architecture/operational-mode-switching.md) — Performs the assembly-level transition from real mode to protected mode during system initialization.

### User Interface & Experience

- [Pixel Buffer Rendering](https://awesome-repositories.com/f/user-interface-experience/virtual-drawing-planes/pixel-buffer-rendering.md) — Renders graphical interfaces by directly manipulating low-level memory pixel buffers.
