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

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