Developing a Multithreaded Kernel From Scratch: Part Two - Module Two

Daniel McCarthy
Created by Daniel McCarthy
5.00 Star (1) 19H 46M 106 Lessons
Best Seller! Lifetime Access Certificate Included

About this course

This course is the continuation of Part 2 Module 1, where we continued building the 32-bit PeachOS kernel, into a fully functioning 64-bit multitasking operating system. In Part 2 Module 2, we take the project to the next level by continuing the development from Module 1. By the end of this course you will have a fully functioning 64-bit operating system capable of GUI windows, task scheduling and more. Keep reading for the full details.

Part 2 - Module 2 (This Module)

Module 2 builds directly on the work from Module 1 and focuses on turning the kernel into a full graphical operating system with multitasking, drivers, and a rich user experience.

You will:

— Expose standard C library functions (fopen, fread, etc.) to userspace through isr80h.
— Build the complete windowing system, with support for fully interactive GUI elements.
— Implement an NVMe SSD driver, enabling high-speed reads from modern solid-state storage.
— Add full PCI/PCIe support, including bridges, making the kernel capable of scanning and interacting with a wide variety of devices.

— Building a disk streamer cache to speed up program loading by 10x to 20x.
— Access a GitHub repository of user programs that you can run directly on your OS. You’ll even be able to submit pull requests to share your own user-space programs with other students in the course.

By the end of this module, you’ll have created a multi-threaded, 64-bit, GUI operating system from scratch bootable on modern hardware and extensible enough to run real user applications.

Skill Level Intermediate
Total Length 19H 46M
Lessons 106
Your Progress Start anytime

What you'll learn

  • Build a 64-bit multitasking kernel from scratch
  • Write a UEFI bootloader to boot on modern hardware
  • Switch the CPU into long mode (x86-64) and run your kernel there
  • Capture and use the UEFI framebuffer to draw pixels directly to the screen
  • Load and render images and fonts in your OS
  • Build a graphical terminal system capable of text rendering via pixels and fonts
  • Design a hierarchical graphics system supporting relative drawing and child graphics
  • Implement a dynamic multi-heap memory allocator using E820 memory regions
  • Create a memory defragmenter using paging to provide continuous virtual memory blocks
  • Extend the FAT16 filesystem to support multiple GPT partitions and virtual drives
  • Abstract and rewrite the disk system to support multi-partition mounting
  • Lay the groundwork for a full GUI windowing system with draggable, clickable elements
  • Prepare to add userspace stdio functions, PCI, and NVMe drivers in later modules

Who this course is for

  • Programmers who want to understand operating systems at a low level
  • Developers interested in kernel and OS design from scratch
  • Students of computer science, systems programming, or embedded systems
  • Hobbyists who enjoy building their own OS or experimenting with bare-metal programming
  • Engineers who want to learn modern 64-bit, UEFI-based booting and kernel development
  • Anyone curious about memory management, paging, and heap design in kernels
  • Developers who want hands-on experience with graphics, terminals, and GUI systems
  • Programmers looking to implement file systems, disk drivers, and PCI/NVMe support
  • Learners who enjoyed Part 1 (PeachOS) and want to continue into 64-bit multi-threaded kernels
  • Advanced C programmers seeking a real-world project that pushes their skills

Requirements

  • A computer (Windows, macOS, or Linux) capable of running QEMU/VirtualBox/VMware
  • Basic knowledge of C programming (pointers, structs, functions)
  • Familiarity with x86 assembly language at a beginner level (recommended)
  • Understanding of basic computer architecture concepts (CPU, RAM, stack, registers)
  • A code editor or IDE of your choice (VS Code, CLion, Vim, etc.)
  • Willingness to use the terminal/command line for building and testing the OS
  • GCC or Clang toolchain installed (I’ll show you how to set it up)
  • (Optional but recommended) Completion of Part 1: Developing a Multitasking Kernel From Scratch a.k.a Kernel Development For Beginners Tutorial