Nimble
adjective
Quick and light in movement in action; agile
NimbleOS, is a work in progress operating system made from scratch using C++, it is an attempt to understand the inner workings of an operating system, by making one from scratch.
- Interrupts
- Graphics
- Print strings to the screen
- Window Management
- Custom Testing Framework (inspired by GTest)
- Serial Output
- Robust Logger
- Use APIC instead of PIC
- Keyboard Support
- Memory Management
- Physical Memory Manager (Bitmap for now)
- Virtual Memory Manager (Bump Allocator for now)
- Heap Allocation (
malloc
and friends)- Implement Block Coalescing
- Stack Trace (with demangling)!
- Kernel STL
- Vector
- Linked List
- Spin Mutex
- Scheduler
- Virtual File System
- Ext2
- NVMe Driver
- Basic Shell
- Ports
- Doom
- GCC
- Cargo
- Vim
Currently, this project can only be built using clang++
with version >= 16.0.6
.
make <run|build> MODE=<debug|test|release>
Invoking make
, will default to
make run MODE=debug