✅ Completed Features:
- Multiboot-compliant bootloader
- 32-bit protected mode kernel
- VGA text mode terminal with scrolling
- Interrupt Descriptor Table (IDT) setup
- Programmable Interrupt Controller (PIC) configuration
- PS/2 keyboard driver with modifier key support
- Interactive shell prompt
- Basic I/O port operations
Goal: Robust interrupt handling and basic I/O
- IDT initialization
- PIC remapping
- Keyboard interrupt handler (IRQ1)
- Scan code to ASCII translation
- Shift and Caps Lock support
- Backspace and Enter handling
- Line buffering
- Exception handlers (page fault, GPF, divide by zero, etc.)
- Better error reporting for exceptions
- Double fault handler
Goal: Add time awareness and prepare for multitasking
- PIT (Programmable Interval Timer) initialization
- Timer interrupt handler (IRQ0)
- Global tick counter
- Basic delay/sleep functions
- Uptime tracking
- Difficulty: Easy-Medium
- Files to modify:
kernel.c, newtimer.c/h - Dependencies: PIC and IDT (already done)
Goal: Proper memory allocation and virtual memory
- Memory map from bootloader (Multiboot info)
- Bitmap-based physical page allocator
- Page frame allocation/deallocation
- Memory statistics (total, used, free)
- Page directory and page table structures
- Identity mapping for kernel
- Higher-half kernel mapping (optional)
- Page fault handler
- Virtual address allocation
- Simple heap allocator (malloc/free)
- First-fit or best-fit algorithm
- Heap expansion/contraction
- Memory leak detection (debug mode)
- Difficulty: Medium-Hard
- Files:
memory.c/h,paging.c/h,heap.c/h - Critical: Page fault handler is essential
Goal: Multiple processes and context switching
-
struct processwith register state - Process ID allocation
- Process state (ready, running, blocked)
- Process creation/termination
- Process list/queue
- Save/restore CPU registers
- Switch page directories
- Switch stack pointers
- TSS (Task State Segment) setup
- Round-robin scheduling algorithm
- Priority levels (optional)
- Scheduler tick (integrate with timer)
- Idle process
- Difficulty: Hard
- Files:
process.c/h,scheduler.c/h,context.S - Dependencies: Timer, Memory Management
Goal: User/kernel mode separation and syscall interface
- User mode page tables
- Ring 3 segments in GDT
- Stack switching (kernel/user stacks)
- Privilege level changes
-
int 0x80orsysentermechanism - Syscall handler
- Syscall table/dispatcher
- Return value handling
-
exit()- Process termination -
write()- Output to terminal -
read()- Keyboard input -
fork()- Process creation (advanced) -
exec()- Load program (advanced)
- Difficulty: Medium-Hard
- Files:
syscall.c/h,syscall.S, modifications toprocess.c - Dependencies: Process Management
Goal: Useful command-line interface
- Tokenize input (split by spaces)
- Command registry/lookup
- Argument parsing
-
help- Show available commands -
clear- Clear screen -
echo- Print arguments -
uptime- Show system uptime -
meminfo- Display memory statistics -
ps- List processes -
kill- Terminate process -
reboot- Restart system
- Store previous commands
- Up/down arrow navigation
- History buffer (circular)
- Difficulty: Easy-Medium
- Files:
shell.c/h,commands.c/h
Goal: Persistent storage and file I/O
- ATA/IDE PIO mode driver
- Read/write sectors
- Disk detection
- Simple file system (custom or FAT12/16)
- File operations (open, close, read, write)
- Directory operations
- Virtual file system (VFS) layer
- Difficulty: Very Hard
- Files:
ata.c/h,fs.c/h,vfs.c/h
- NE2000 or RTL8139 network driver
- TCP/IP stack (simplified)
- Sockets interface
- VESA VBE framebuffer
- Basic windowing system
- Mouse support
- Pipes
- Shared memory
- Message queues
- SMP (Symmetric Multiprocessing)
- Per-CPU data structures
- Spinlocks and synchronization
Want to implement a feature? Great!
- Pick a task from the current or next phase
- Discuss your approach (open an issue)
- Implement incrementally (small PRs are better)
- Test thoroughly (especially with QEMU)
- Document your changes (code comments + docs)
- Easy: Basic C knowledge, clear instructions
- Medium: Understanding of OS concepts required
- Hard: Deep understanding of x86 architecture
- Very Hard: Extensive research and debugging needed
For each phase, these resources will help:
- OSDev Wiki - Start here
- The little book about OS development
- xv6 Source Code - Great reference
- Interrupts: OSDev Interrupts
- Memory: OSDev Paging
- Processes: OSDev Multitasking
- Syscalls: OSDev System Calls
- v0.1 (Current): Basic interrupt handling and keyboard I/O
- v0.2 (Planned): Exception handlers and timer
- v0.3 (Planned): Memory management
- v0.4 (Planned): Process management and scheduling
- v1.0 (Goal): Full multitasking OS with syscalls and shell
Last Updated: February 2026
This roadmap is a living document and will evolve as the project grows. Suggestions and contributions are always welcome!