Page 1 of 1

NoviumOS - a x86 hobby operating system built from scratch

Posted: Wed Sep 30, 2026 12:24 pm
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

Re: NoviumOS - a x86 hobby operating system built from scratch

Posted: Thu Oct 01, 2026 6:24 am
by NeuroSamaOS
Nice!