-
Notifications
You must be signed in to change notification settings - Fork 4
Description
This issue contains the global road map for the Infinity OS implementation. It decides the tasks into a small steps, in order to be more organised and easier to measure the development.
0.1.0
The goal of the milestone is start a minimal x86 kernel through Initium. Small steps make us focusing and keep us motivated.
- Create the build system base - I don't want use MAKE, so we can check something like scons or raw python scripts
- Make Initium loads the Kernel
- Repare Rust to be executed
- Enable SSE (Rust uses it by default)
- Check if the kernel was loaded through Initium, otherwise print an error and halt the CPU
- Simple paging
- Global Descriptor Table (GDT)
- Basic console functions
References
0.2.0
This second milestone focuses on the memory management functions.
- Store permanently the information passed by the bootloader
- Handle panics
- Frame allocator
- Page Tables
- Implement Heap (dynamic memory)
0.3.0
This third milestone focuses in the catching exceptions, as well handle it properly, and prevent triple faults.
- Interrupt Descriptor Table (IDT)
- Show useful exception messages (present an error code and a stack frame)
- Add a mechanism to recover from an exception
- Handle Double Faults
- Prevent Triple Faults
- Allocate multiple stacks for Kernel, in order to recover from a stack overflow
0.4.0
In this milestone the main goal is handle the external interrupts, from other devices, like keyboard, mouse, etc...
- PIC
- LAPIC
- PIT Fallback - search if this is necessary nowadays
- Simple keyboard handler
- i8042 (PS/2)
- Log system
0.5.0
In this milestone we will focus on the CPU initialisation, read ACPI tables and start APs.
- Analise CPU features
- Read ACPI tables
- Start APs (multi-core support)
- Create a mechanism to handle the context switching
0.6.0
Now the things gets more complicated 🙂 The idea is add the kernel the ability to run simple processes. This requires the implementation of a scheduler.
- implement a simple scheduler
- start a process after the context initialisation
- Bring up the VM (Virtual Memory) system
Unorganised planing
This is a list of unorganised TODOs, this only must be implemented after the last planed milestone.
- IPC
- Implement thread support
- Add support to ARM systems
- Add support to file system
- Implement Scheme (an universal way to access files)
- Implement a lock system
- Implement a Servers system
- Implement a Driver system
- Implement a master service that monitors all other services and restart them in case of failure.
- Implement "Photon", an future ready user interface and component library for the development of graphical applications.
- (...)