Update Roadmap

This commit is contained in:
Liam Kerr 2026-02-09 19:20:25 +00:00
parent 9e91024f35
commit 16124277ee

View file

@ -2,17 +2,53 @@
RISC-V Operating System.
## Roadmap
[x] Machine Mode initialization
## Kernel Development Roadmap
[x] UART Driver
### Phase 1: Foundations & Memory Management (Current)
- [x] **Bootstrapping**: RISC-V `entry.S` and kernel entry point.
- [x] **UART Driver**: Basic serial communication for debugging.
- [x] **Panic System**: Kernel panic mechanism for fatal errors.
- [x] **Physical Memory**: Page-level allocator (free list based).
- [x] **Kernel Heap**: `kmalloc`/`kfree` with:
- [x] Splitting of large blocks.
- [x] Doubly-linked list headers.
- [x] Bidirectional coalescing (Iterative).
- [~] **String Library**: Complete `lib/string.c` (`memset`, `memcpy`, `strcmp`, `strlen`).
- [~] **Formatted Printing**: Robust `kprintf` implementation for hex and decimal.
[X] Trap / Panic
### Phase 2: Hardware Interfacing & Traps
- [ ] **Trap Handling**:
- [~] Setup `mtvec` (Machine Trap Vector).
- [ ] Assembly "trampoline" to save/restore registers.
- [~] C dispatcher for exceptions and interrupts.
- [ ] **Timer Interrupts**:
- [ ] Interface with RISC-V CLINT (Core Local Interrupter).
- [ ] Implement a system heartbeat (ticks).
- [ ] **External Interrupts**: Setup PLIC (Platform-Level Interrupt Controller).
[x] Heap Allocator with coalescing
### Phase 3: Multitasking & Scheduling
- [ ] **Task Structure**: Define `task_struct` (PID, State, Stack Pointer, Priority).
- [ ] **Context Switching**: Assembly logic to switch register sets between tasks.
- [ ] **Scheduler**:
- [ ] Implement a Round-Robin scheduling algorithm.
- [ ] Task lifecycle management (Create, Yield, Terminate).
- [ ] **Synchronization**: Basic Spinlocks or Semaphores for resource protection.
[ ] Context Switching / Multi-threading
### Phase 4: Virtual Memory
- [ ] **Sv39 Paging**:
- [ ] Walk the 3-level page table structure.
- [ ] Map/Unmap functions for virtual addresses.
- [ ] **Kernel/User Separation**: Isolate kernel memory from user processes.
- [ ] **Higher Half Kernel**: Remap kernel to upper virtual memory.
[ ] Timer Interrupts (Round Robin)
### Phase 5: Userspace & System Calls
- [ ] **User Mode Jump**: Switch CPU to User (U) mode.
- [ ] **ECALL Interface**:
- [ ] Implement system call dispatcher.
- [ ] Basic syscalls: `write`, `exit`, `getpid`, `fork`.
- [ ] **ELF Loader**: Read and execute simple static binaries.
[ ] User Mode (U-Mode) transition
### Phase 6: Filesystem & Shell
- [ ] **VFS Layer**: Abstract File System interface.
- [ ] **Initial RAM Disk (initrd)**: Load basic files into memory.
- [ ] **User Shell**: Interactive CLI to execute commands and scripts.