About

Koiz-OS is a side project I started in 2020 to create my own operating system from scratch. My initial goal was to get to user processes, which I completed in 2023.

It initially served as a project to help me better understand how operating systems works in general and is a bit of a pet project I do just for fun. It's not meant to be used in production settings. Below is a brief summary of my milestones with links to the full articles.

The actual code can be found on GitHub.

Milestone 1 - Bootloader

Highlights:

  • Programmed a custom bootloader to load the operating system
  • See Full Post

Milestone 2 - Building a Standard Library

Highlights:

  • Programmed a standard C library that works with my operating system
  • See Full Post

Milestone 3 - Interrupts

Highlights:

  • Added in interrupts and interrupt handlers (ISR/IRQs)
  • Added in PIC interrupts for handling the keyboard.
  • See Full Post

Milestone 4 - Physical Memory Allocation

Highlights:

  • Added memory detection.
  • Added in a physical memory allocator that handles alloc/free while respecting reserved areas of memory
  • See Full Post

Milestone 5 - Virtual Memory Allocation

Highlights:

  • Added Paging (Page Directories/Tables), TLB, and MMU support
  • Added virtual memory translations
  • See Full Post

Milestone 6 - Malloc/Free and Memory

upload in progress, 0

Highlights:

  • Added a slab allocator
  • Added malloc/free
  • Added a basic shell with two shell commands
  • See Full Post

Milestone 7 -Adding a Fat16 filesystem

Highlights:

  • Added a FAT16 filesystem
  • Added ramdisks
  • Added shell commands to interact with the filesystem
  • See Post 1 / See Post 2

Milestone 8 - Dropping to Userspace

Highlights:

  • Added the Programmable Interval Timer (For preemption)
  • Implemented TSS to support user mode
  • Added a system call framework
  • Added the ability to switch to user mode and back!
  • See Full Post

Milestone 9 - Processes and Scheduling

Highlights:

  • Built a simple user program that lives in the filesystem
  • Added ability to load and run the user program from the filesystem
  • Added scheduling via MLFQ algorithm
  • Added commands to run multiple processes in the background
  • See Full Post