# Operating System Development Roadmap (Beginner Path) ## How to Follow? [![](https://mermaid.ink/img/pako:eNp1k11zojAUhv9KJr21Dl1qBS52BrW21rZq9WqjF1k4CLshYULoLuv43zckorgzCze8nOd8JwcciRhwgBMmfkUplQptJluO9BOStdI6QGORFwwUoBHsM85B7tDt7Vc0Iksp9pLmecb3aFrxmObAFWXlbsttiJEBx2SMuuiIllnUQBdkQiZUUbRWsopUJeHa-khCthcyU2l-cbbA2ABTEsaflEcQdxOdYkwsYsVjK6ycGvlEwrKE_Durr2uz1mfSDKBSIFEoozRTYEo8l_BkqBlZrPWkdA2Fav2fraUFZ0a-EJMDaXyTgpD1rmudk3VdKsj_6cMiLwZ5JRP4BCaKZtpoDaoqTiHm1t7ir0a-XfLNmj2aHalM8HPYN8O9k5EQigka60Y7GXZdaHEKNgfJgV2Zlk1ZWQTojXK6h5OrJd4NsSIzrqeYQ5xRfZp0hz_0KNthLSxjxbIVVq6M_LhseSOK7ikoVc0AhSjJGAtuEj_plUqKnxDcuK7bRVYnxE_8_yEfLXIdBfdwrmunWawvy6Fx2GKV6ja3ONCfMSS0YmqLt_yoUVopsa55hAN9oqGHpaj2KQ4SfTm0qopYD2CS0WbD578F5d-EyFsXLXFwwL9x4A_6ruM6Q8d58NyB73o9XOPg3uv7wzvX84dDZ-AMvbtjD_8x_k7fd8z74DneF8_37o9_AfM7MC0?type=png)](https://mermaid.live/edit#pako:eNp1k11zojAUhv9KJr21Dl1qBS52BrW21rZq9WqjF1k4CLshYULoLuv43zckorgzCze8nOd8JwcciRhwgBMmfkUplQptJluO9BOStdI6QGORFwwUoBHsM85B7tDt7Vc0Iksp9pLmecb3aFrxmObAFWXlbsttiJEBx2SMuuiIllnUQBdkQiZUUbRWsopUJeHa-khCthcyU2l-cbbA2ABTEsaflEcQdxOdYkwsYsVjK6ycGvlEwrKE_Durr2uz1mfSDKBSIFEoozRTYEo8l_BkqBlZrPWkdA2Fav2fraUFZ0a-EJMDaXyTgpD1rmudk3VdKsj_6cMiLwZ5JRP4BCaKZtpoDaoqTiHm1t7ir0a-XfLNmj2aHalM8HPYN8O9k5EQigka60Y7GXZdaHEKNgfJgV2Zlk1ZWQTojXK6h5OrJd4NsSIzrqeYQ5xRfZp0hz_0KNthLSxjxbIVVq6M_LhseSOK7ikoVc0AhSjJGAtuEj_plUqKnxDcuK7bRVYnxE_8_yEfLXIdBfdwrmunWawvy6Fx2GKV6ja3ONCfMSS0YmqLt_yoUVopsa55hAN9oqGHpaj2KQ4SfTm0qopYD2CS0WbD578F5d-EyFsXLXFwwL9x4A_6ruM6Q8d58NyB73o9XOPg3uv7wzvX84dDZ-AMvbtjD_8x_k7fd8z74DneF8_37o9_AfM7MC0) ## Phase 1: Programming Fundamentals ### 1.1 C Programming Basics - Introduction to Programming - [CS50's Introduction to Programming](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x) - [Learn C - Interactive Tutorial](https://www.learn-c.org/) - [C Programming at LearnCpp](https://www.learncpp.com/) - Basic Syntax and Control Structures - [C Programming Language Tutorial](https://www.tutorialspoint.com/cprogramming/) - [W3Schools C Tutorial](https://www.w3schools.com/c/) - [C Language Cheat Sheet](https://cheatography.com/ashlyn-black/cheat-sheets/c/) - Variables and Data Types - [C Data Types Guide](https://en.cppreference.com/w/c/language/type) - [Variables in C Programming](https://www.programiz.com/c-programming/c-variables-constants) - Practice: Create programs using different data types ### 1.2 Intermediate C Programming - Functions and Program Structure - [Functions in C](https://www.geeksforgeeks.org/functions-in-c/) - [Program Structure Tutorial](https://www.tutorialspoint.com/cprogramming/c_functions.htm) - Practice: Create modular programs - Arrays and Strings - [Array Operations in C](https://www.programiz.com/c-programming/c-arrays) - [String Handling](https://www.tutorialspoint.com/c_standard_library/string_h.htm) - Practice: String manipulation programs - Pointers Basics - [Understanding Pointers](https://www.learn-c.org/en/Pointers) - [Pointer Tutorial](https://www.programiz.com/c-programming/c-pointers) - Practice: Basic pointer operations ### 1.3 Advanced C Programming - Advanced Pointer Concepts - [Pointer to Pointer](https://www.geeksforgeeks.org/double-pointer-pointer-pointer-c/) - [Function Pointers](https://www.geeksforgeeks.org/function-pointer-in-c/) - Practice: Complex pointer programs - Memory Management - [Dynamic Memory Allocation](https://www.geeksforgeeks.org/dynamic-memory-allocation-in-c-using-malloc-calloc-free-and-realloc/) - [Memory Layout](https://www.geeksforgeeks.org/memory-layout-of-c-program/) - Practice: Memory allocation programs - File Operations - [File Handling in C](https://www.programiz.com/c-programming/c-file-input-output) - [Binary File Operations](https://www.tutorialspoint.com/c_standard_library/c_function_fread.htm) - Practice: File handling programs ### 1.4 Data Structures - Basic Data Structures - [Arrays and Linked Lists](https://www.geeksforgeeks.org/data-structures/) - [Stack and Queue](https://www.programiz.com/dsa/stack) - Practice: Implement basic data structures - Advanced Data Structures - [Trees and Graphs](https://www.geeksforgeeks.org/binary-tree-data-structure/) - [Hash Tables](https://www.hackerearth.com/practice/data-structures/hash-tables/basics-of-hash-tables/tutorial/) - Practice: Implement complex data structures ### 1.5 Assembly Language Basics - Introduction to Assembly - [NASM Tutorial](https://cs.lmu.edu/~ray/notes/nasmtutorial/) - [x86 Assembly Guide](https://www.cs.virginia.edu/~evans/cs216/guides/x86.html) - Practice: Basic assembly programs - CPU Architecture - [CPU Registers](https://wiki.osdev.org/CPU_Registers_x86) - [Instruction Set Reference](https://www.felixcloutier.com/x86/) - Practice: Register manipulation - Memory Addressing - [Memory Addressing Modes](https://wiki.osdev.org/X86-64_Instruction_Encoding) - [Segmentation](https://wiki.osdev.org/Segmentation) - Practice: Memory access programs ## Phase 2: Computer Architecture ### 2.1 Basic Computer Organization - CPU Components - [CPU Architecture](https://www.cs.cornell.edu/courses/cs3410/2019sp/) - [Instruction Pipeline](https://en.wikibooks.org/wiki/Microprocessor_Design/Pipeline) - Memory System - [Memory Hierarchy](https://www.cs.cornell.edu/courses/cs3410/2016fa/schedule.html) - [Cache Memory](https://www.computer.org/csdl/magazine/mi/2001/03/m3062/13rRUxBJhBm) ### 2.2 I/O Systems - Basic I/O Concepts - [I/O Architecture](https://www.sciencedirect.com/topics/computer-science/io-architecture) - [Device Controllers](https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/13_IOSystems.html) - Interrupt Handling - [Interrupt Basics](https://wiki.osdev.org/Interrupts) - [PIC Programming](https://wiki.osdev.org/PIC) ## Phase 3: Operating System Concepts ### 3.1 OS Basics - OS Structure - [OS Components](https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/2_Structures.html) - [System Calls](https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/2_Structures.html#2_3) - Process Management - [Process Concepts](https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/3_Processes.html) - [Thread Management](https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/4_Threads.html) ### 3.2 Memory Management - Virtual Memory - [Virtual Memory Concepts](https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/8_MainMemory.html) - [Page Tables](https://wiki.osdev.org/Page_Tables) - Memory Allocation - [Memory Allocation Algorithms](https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/9_VirtualMemory.html) - [Paging Implementation](https://wiki.osdev.org/Paging) ## Phase 4: OS Development Basics ### 4.1 Development Environment - Tool Setup - [Cross Compiler Setup](https://wiki.osdev.org/GCC_Cross-Compiler) - [QEMU Installation](https://www.qemu.org/download/) - Debugging Tools - [GDB Basics](https://sourceware.org/gdb/current/onlinedocs/gdb/) - [OS Debugging Tips](https://wiki.osdev.org/How_Do_I_Use_A_Debugger) ### 4.2 Bootloader Development - BIOS Programming - [BIOS Interrupts](https://wiki.osdev.org/BIOS) - [Real Mode](https://wiki.osdev.org/Real_Mode) - Protected Mode - [Protected Mode](https://wiki.osdev.org/Protected_Mode) - [GDT Setup](https://wiki.osdev.org/GDT_Tutorial) ### 4.3 Basic Kernel Development - Kernel Entry - [Kernel Basics](https://wiki.osdev.org/Kernels) - [Linking Script](https://wiki.osdev.org/Linker_Scripts) - Basic Drivers - [VGA Text Mode](https://wiki.osdev.org/Text_Mode_Cursor) - [Keyboard Driver](https://wiki.osdev.org/PS2_Keyboard) ## Beginner Projects (In Order) 1. Hello World in Assembly - [Assembly Hello World](https://wiki.osdev.org/Assembly_Hello_World) 2. Basic Bootloader - [Bootloader Tutorial](https://wiki.osdev.org/Rolling_Your_Own_Bootloader) 3. Simple Kernel - [Bare Bones](https://wiki.osdev.org/Bare_Bones) 4. Memory Management - [Writing a PMM](https://wiki.osdev.org/Writing_A_PMM) 5. Basic Shell - [Writing a Shell](https://brennan.io/2015/01/16/write-a-shell-in-c/) ## Online Courses 1. [CS50: Introduction to Computer Science](https://www.edx.org/course/cs50s-introduction-to-computer-science) 2. [Nand2Tetris](https://www.coursera.org/learn/build-a-computer) 3. [Introduction to Operating Systems by Georgia Tech](https://www.udacity.com/course/introduction-to-operating-systems--ud923) 4. [MIT OCW 6.828: Operating System Engineering](https://ocw.mit.edu/courses/6-828-operating-system-engineering-fall-2012/) ## Books 1. "C Programming Language" by Kernighan and Ritchie 2. "Modern Operating Systems" by Andrew S. Tanenbaum 3. "Operating Systems: Three Easy Pieces" by Remzi H. Arpaci-Dusseau 4. "Computer Organization and Design" by Patterson and Hennessy 5. "Operating System Concepts" by Silberschatz, Galvin, and Gagne ## Research Papers 1. ["The Evolution of Operating Systems"](https://www.cs.princeton.edu/courses/archive/fall11/cos318/readings/evo-history.pdf) 2. ["Understanding the Linux Virtual Memory Manager"](https://www.kernel.org/doc/gorman/pdf/understand.pdf) 3. ["The Design of the Unix Operating System"](https://courses.cs.washington.edu/courses/cse451/04wi/papers/ritchie84evolution.pdf) 4. ["An Overview of the Singularity Project"](https://research.microsoft.com/pubs/52716/osr2007_rethinkingsoftwarestack.pdf) 5. ["Interrupts and Interrupt Handling"](https://www.cs.utah.edu/~regehr/papers/interference06.pdf) ## Additional Resources - [OSDev Wiki](https://wiki.osdev.org/) - [Linux From Scratch](http://www.linuxfromscratch.org/) - [xv6 Teaching Operating System](https://pdos.csail.mit.edu/6.828/2019/xv6.html) - [OS Development Series](http://www.brokenthorn.com/Resources/OSDevIndex.html) ## Community Resources - [OSDev Forums](https://forum.osdev.org/) - [Stack Overflow OS Development Tag](https://stackoverflow.com/questions/tagged/operating-system) - [Reddit r/osdev](https://www.reddit.com/r/osdev/) - [OS Development Discord](https://discord.gg/osdev) ## Development Tools 1. Text Editors/IDEs - Visual Studio Code with C/C++ extension - Eclipse CDT - CLion 2. Debugging Tools - GDB - BOCHS Debugger - QEMU Monitor 3. Build Tools - Make - CMake - NASM/YASM 4. Testing Tools - Unit Testing Frameworks - QEMU for OS Testing - VirtualBox for Testing ## Next Steps After Completion 1. Study existing OS codebases 2. Contribute to open-source OS projects 3. Explore advanced topics: - Real-time operating systems - Embedded systems - Distributed systems