NoviumOS - a x86 hobby operating system built from scratch

This forums is for OS project announcements including project openings, new releases, update notices, test requests, and job openings (both paying and volunteer).
Post Reply
AlexDev
Posts: 1
Joined: Wed Sep 30, 2026 11:47 am

NoviumOS - a x86 hobby operating system built from scratch

Post by AlexDev »

Hello everyone,

I've been working on a hobby operating system called NoviumOS. It currently supports x86_32 bit architecture and it uses GRUB as the bootloader.

Here are some of the features it has:
  • Boot Chain: GRUB multiboot header, bootstrap.S sets the stack, clears BSS, and hands off to C (linked at 1MiB via custom linker script).
  • Page Allocator: A 4GiB bitmap allocator that parses the GRUB memory map. Flat 4GiB paging with statically allocated 4KB pages.
  • Sub-page Heap: A basic multi-page sub-page heap allocator. It uses a 16-byte BlockMeta header with magic numbers, a sorted doubly linked free list, 8-byte alignment, immediate left/right coalescing, and boundary-tag updates after splits/merges.
  • Preemptive Round Robin Scheduler: Supports up to 32 tasks with priorities. Task structures track saved EIP/ESP/EBP. Implements create, yield, block, unblock, sleep-until-tick, and kill. EFLAGS are preserved properly, and context switching is deferred until after the PIC EOI.
  • VGA Text Console & Keyboard: An 80x25 text console that you can type in, featuring hardware cursor handling, scrolling, and a PS/2 keyboard driver with a 32-entry ring buffer.
  • Libc Subset: Basic string functions and a custom kprintf supporting %c, %s, %d, %i, %u, %x, %X, and %%.
Right now the kernel runs a basic shell (no commands yet) and a spinning worker, preempting each other on a 100Hz timer. Not parallelism - single core, so they take turns.

It still has no filesystem, IPC or userspace yet.

Bottleneck im currently fixing: My heap starts at physical `0x1000` in low memory, and `HeapGrow` only extends at the current heap end, so it's permanently capped at ~620KB with 60MB free above 1MB.

Heres the github repo link: https://github.com/alexdev8930/NoviumOS
Post Reply