SquidgeOS/README.md

54 lines
2.4 KiB
Markdown
Raw Normal View History

2026-02-09 03:48:05 +00:00
# SquidgeOS
RISC-V Operating System.
2026-02-09 19:20:25 +00:00
## Kernel Development Roadmap
2026-02-09 03:48:05 +00:00
2026-02-09 19:20:25 +00:00
### 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.
2026-02-09 03:48:05 +00:00
2026-02-09 19:20:25 +00:00
### Phase 2: Hardware Interfacing & Traps
- [/] **Trap Handling**:
- [/] Setup `mtvec` (Machine Trap Vector).
2026-02-09 19:20:25 +00:00
- [ ] Assembly "trampoline" to save/restore registers.
- [/] C dispatcher for exceptions and interrupts.
2026-02-09 19:20:25 +00:00
- [ ] **Timer Interrupts**:
- [ ] Interface with RISC-V CLINT (Core Local Interrupter).
- [ ] Implement a system heartbeat (ticks).
- [ ] **External Interrupts**: Setup PLIC (Platform-Level Interrupt Controller).
2026-02-09 03:48:05 +00:00
2026-02-09 19:20:25 +00:00
### 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.
2026-02-09 03:48:05 +00:00
2026-02-09 19:20:25 +00:00
### 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.
2026-02-09 03:48:05 +00:00
2026-02-09 19:20:25 +00:00
### 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.
2026-02-09 03:48:05 +00:00
2026-02-09 19:20:25 +00:00
### 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.