HOME > Development > Developing a Multithreaded Kernel From Scratch!

Developing a Multithreaded Kernel From Scratch!

  • Development
  • May 11, 2025
SynopsisDeveloping a Multithreaded Kernel From Scratch!, available at...
Developing a Multithreaded Kernel From Scratch!  No.1

Developing a Multithreaded Kernel From Scratch!, available at $84.99, has an average rating of 4.68, with 138 lectures, based on 1305 reviews, and has 13785 subscribers.

You will learn about How to create a kernel from scratch How to create a multi-tasking kernel How to handle malicious or problematic programs in your operating system. Terminating them if they misbehave. How memory works in computers The difference between kernel land, user land and the protection rings that make up modern computing Kernel design patterns used by the Linux kernel its self You will learn all about virtual memory and how to map virtual addresses to physical addresses You will learn how to make the kernel understand processes and tasks You will learn how to load ELF files You will learn how to debug disassembled machine code You will learn how to debug your kernel in an emulator with GDB. This course is ideal for individuals who are Beginner kernel developers who want to learn how to create kernels It is particularly useful for Beginner kernel developers who want to learn how to create kernels.

Enroll now: Developing a Multithreaded Kernel From Scratch!

Summary

Title: Developing a Multithreaded Kernel From Scratch!

Price: $84.99

Average Rating: 4.68

Number of Lectures: 138

Number of Published Lectures: 138

Number of Curriculum Items: 138

Number of Published Curriculum Objects: 138

Original Price: £49.99

Quality Status: approved

Status: Live

What You Will Learn

  • How to create a kernel from scratch
  • How to create a multi-tasking kernel
  • How to handle malicious or problematic programs in your operating system. Terminating them if they misbehave.
  • How memory works in computers
  • The difference between kernel land, user land and the protection rings that make up modern computing
  • Kernel design patterns used by the Linux kernel its self
  • You will learn all about virtual memory and how to map virtual addresses to physical addresses
  • You will learn how to make the kernel understand processes and tasks
  • You will learn how to load ELF files
  • You will learn how to debug disassembled machine code
  • You will learn how to debug your kernel in an emulator with GDB.
  • Who Should Attend

  • Beginner kernel developers who want to learn how to create kernels
  • Target Audiences

  • Beginner kernel developers who want to learn how to create kernels
  • This course is designed to teach you how to create your very own multitasking operating system and kernel from scratch. It is assumed you have no experience in programming kernels and you are taught from the ground up.

    Real Mode Development

    Real mode is a legacy mode in all Intel processors that causes the processor to start in a legacy state, it performs like the old 8086 Intel processors did back in the way.

    In the “Real Mode Development” section of the course we start by learning about the boot process and how memory works, we then move on to creating our very own boot loader that we test on our real machine! This boot loader will output a simple “Hello World!” message to the screen and we write this boot loader in purely assembly language.

    In this section we also read a sector(512 bytes) from the hard disk and learn all about interrupts in real mode and how to create them.

    This section gives you a nice taster into kernel development, without over whelming you with information. You are taught the basics and enough about the legacy processors to be able to move forward to more modern kernel development further into this course.

    Protected Mode Development

    In this section we create a 32 bit multi-tasking kernel that has the FAT16 filesystem. Our kernel will use Intel’s built in memory protection and security mechanisms that allow us to instruct the processor to protect our kernel and prevent user programs from damaging it.

    This section is very in depth, you are taught all about paging and virtual memory. We take advantage of clever instructions in Intel processors to allow all processes to share the same memory addresses, this is known as memory virtualization. We map memory addresses to point to different physical memory addresses to create the illusion that every process that is running is loaded at the same address. This is a very common technique in kernel development and is also how swap files work (Those files that are used to compensate for when you run out of usable RAM).

    We create our own virtual filesystem layer that uses a design that is similar to the Linux kernel. This clever abstraction that will be taught to you was inspired by the instructors knowledge of writing Linux kernel drivers in his past.

    You are taught about the design of the FAT16 filesystem and how the FAT16 filesystem is broken down into clusters and that they can chain together. We then implement our very own FAT16 filesystem driver allowing files to be born!

    We implement functionality for tasks and processes and write our own keyboard drivers.

    In this course you also get to learn how memory management works, we implement the “malloc” and “free” functions creating our very own heap that’s designed to keep track of what memory is being used. Memory management is essential in any operating system and kernel.

    Let us not forget that we even create an ELF file loader, we will compile all our operating systems programs into ELF files and allow the loading of binary programs or ELF programs. ELF files contain a lot of information that describes our program for example where our program should be loaded into memory and the different sections of the program.

    By the end of this course you will have a fully functioning 32 bit multi-tasking kernel that can have many processes and tasks running at the same time. You will have a working shell that we can use as well.

    Assembly language bonus

    This is a bonus section designed to bring your assembly skills up to scratch should you struggle a little bit with the assembly language in this course. It’s however advised you come to this course with experience in assembly language, we do use it and its important. Never the less if you want to take a chance on this course with no assembly experience then this section will help point you in the right direction so your able to take what you learned and apply it to the kernel.

    Taught by an expert that has created Linux kernel modules professionally in the work place. 15 Years Experience As A Software Engineer

    Course Curriculum

    Chapter 1: Introduction

    Lecture 1: Introduction

    Chapter 2: Setup And A Brief Explanation Of Kernel Development

    Lecture 1: What Is Memory?

    Lecture 2: The Boot Process

    Lecture 3: Installing What We Need For Real Mode Development

    Chapter 3: Real Mode Development

    Lecture 1: Hello World Bootloader

    Lecture 2: Understanding Real Mode

    Lecture 3: Segmentation Memory Model

    Lecture 4: Improving Our Bootloader

    Lecture 5: Preparing our bootloader to be booted on real hardware

    Lecture 6: Writing our bootloader to a USB stick

    Lecture 7: Booting the bootloader

    Lecture 8: The Interrupt Vector Table Explained

    Lecture 9: Implementing our own interrupts in real mode

    Lecture 10: Disk Access And How It Works

    Lecture 11: Reading from the hard disk

    Chapter 4: Protected Mode Development

    Lecture 1: What is Protected Mode?

    Lecture 2: Switching To Protected Mode

    Lecture 3: Restructuring Our Project

    Lecture 4: Enabling the A20 line

    Lecture 5: Creating a Cross Compiler So We Can Code In C

    Lecture 6: Loading our 32 bit kernel into memory and working with debugging symbols

    Lecture 7: Cleaning our object files

    Lecture 8: Dealing With Alignment Issues

    Lecture 9: C Code In Protected Mode

    Lecture 10: Text Mode Explained

    Lecture 11: Writing To The Screen, Hello World Tutorial

    Lecture 12: Interrupt Descriptor Table Explained

    Lecture 13: Implementing The Interrupt Descriptor Table

    Lecture 14: Implementing In and Out Functions

    Lecture 15: Programmable Interrupt Controller Explained

    Lecture 16: Programmable Interrupt Controller Implementation

    Lecture 17: Understanding The Heap And Memory Allocation

    Lecture 18: Implementing Our Heap

    Lecture 19: Creating the enable interrupts function

    Lecture 20: Understanding Paging

    Lecture 21: Implementing Paging

    Lecture 22: Modifying the page table

    Lecture 23: Preparing To Read From The Hard Disk

    Lecture 24: Reading from the disk in C with the ATA controller

    Lecture 25: Improving Our Disk Driver

    Lecture 26: What is a filesystem?

    Lecture 27: Creating a path parser

    Lecture 28: Creating a disk stream

    Lecture 29: File Allocation Table Explained

    Lecture 30: Starting To Create our FAT File system

    Lecture 31: Understanding the VFS(Virtual File System) Layer

    Lecture 32: Implementing our virtual filesystem core functionality

    Lecture 33: implementing FAT16 filesystem driver core functionality

    Lecture 34: Implementing FAT16 Structures

    Lecture 35: Implementing The FAT16 Resolver Function

    Lecture 36: Implementing the VFS fopen function

    Lecture 37: Implementing FAT16 fopen function

    Lecture 38: Implementing the VFS fread function

    Lecture 39: Implementing FAT16 fread functionality

    Lecture 40: Implementing the VFS fseek functionality

    Lecture 41: Implementing the FAT16 fseek functionality

    Lecture 42: Implementing the fstat VFS functionality

    Lecture 43: Implementing the FAT16 fstat function

    Lecture 44: Implementing the VFS fclose functionality

    Lecture 45: Implementing the FAT16 fclose functionality

    Lecture 46: Implementing a kernel panic

    Lecture 47: Understanding User Land

    Lecture 48: Changing our kernel segment and data descriptors to be written in C

    Lecture 49: Implementing The TSS(Task Switch Segment)

    Lecture 50: Implementing Task Foundations

    Lecture 51: Implementing Process Foundations Part 1

    Lecture 52: Implementing Process Foundations Part 2

    Lecture 53: Packing the GDT

    Lecture 54: Implementing User Land Functionality

    Lecture 55: Creating our first user process application

    Lecture 56: Executing the process and dropping into user land privileges

    Lecture 57: Changing the paging functionality

    Lecture 58: Talking with the kernel from userland

    Lecture 59: Creating the interrupt 0x80 for user process to kernel communication

    Lecture 60: Creating the ability to create and execute kernel commands

    Lecture 61: Creating our first kernel command

    Lecture 62: Calling our kernel command

    Lecture 63: Copying strings from the tasks process

    Lecture 64: Reading the tasks stack

    Lecture 65: Creating the print command in the kernel

    Lecture 66: Understanding keyboard access in protected mode

    Lecture 67: Creating the virtual keyboard layer

    Lecture 68: Creating the PS2 port keyboard driver part 1

    Lecture 69: Improving our interrupt descriptor table design

    Lecture 70: Creating a cleaner way to create interrupt handlers in the interrupt descriptor

    Lecture 71: Changing The Current Process

    Lecture 72: Creating the PS2 port keyboard driver part 2

    Lecture 73: Getting a key from the keyboard buffer in user land

    Lecture 74: Creating a putchar command that writes one character to the terminal

    Lecture 75: Implementing backspace in the terminal

    Lecture 76: Revising our stream reader

    Lecture 77: Elf Files Explained

    Lecture 78: Implementing The Elf Loader – Part 1

    Lecture 79: Implementing The Elf Loader – Part 2

    Lecture 80: Implementing The Elf Loader – Part 3

    Lecture 81: Implementing The Elf Loader – Part 4

    Instructors

  • Developing a Multithreaded Kernel From Scratch!  No.2
    Daniel McCarthy
    Compiler developer in my spare time
  • Rating Distribution

  • 1 stars: 8 votes
  • 2 stars: 16 votes
  • 3 stars: 65 votes
  • 4 stars: 348 votes
  • 5 stars: 869 votes
  • Frequently Asked Questions

    How long do I have access to the course materials?

    You can view and review the lecture materials indefinitely, like an on-demand channel.

    Can I take my courses with me wherever I go?

    Definitely! If you have an internet connection, courses on Udemy are available on any device at any time. If you don’t have an internet connection, some instructors also let their students download course lectures. That’s up to the instructor though, so make sure you get on their good side!