Practice Series for building your own Operating System
This repository contains a practice series dedicated to guiding you through the process of building your own operating system. It's designed for hands-on learning and understanding the fundamental concepts behind OS development.
Welcome to the Osmygod practice series! This project aims to demystify operating system development by breaking it down into manageable steps. Whether you're a seasoned developer curious about low-level programming or a beginner eager to learn how an OS works from the ground up, this series is for you.
We'll cover topics such as:
- Bootstrapping and bootloaders
- Memory management
- Interrupt handling
- Input/Output (I/O)
- Process management
- Filesystems
To get started with the Osmygod series, you'll need to clone this repository:
git clone https://github.com/your-username/Osmygod.git
cd OsmygodEach part of the series will be organized into its own directory, with detailed instructions and code examples.
The series will be structured incrementally, with each part building upon the previous one. Here's a general outline:
- Part 1: Bootloader Basics - Setting up the initial boot process.
- Part 2: Protected Mode - Transitioning to 32-bit protected mode.
- Part 3: Memory Management - Implementing basic memory allocation.
- Part 4: Interrupts - Handling hardware and software interrupts.
- Part 5: Kernel Development - Building a simple kernel.
- Part 6: Beyond - Exploring more advanced topics.
Before diving into this series, it's recommended to have a basic understanding of:
- Assembly Language (x86): Familiarity with basic assembly concepts will be very helpful.
- C Programming Language: The majority of the OS will be written in C.
- Computer Architecture: Knowledge of how computer hardware works at a fundamental level.
Tools you'll need:
- GCC/Clang: C compiler.
- NASM/GAS: Assembler.
- QEMU: Emulator for testing your OS.
- Make: Build automation tool.
We welcome contributions to the Osmygod project! If you have suggestions, improvements, or want to add new parts to the series, please feel free to open an issue or submit a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.