Skip to content

Global Road Map #1

@gil0mendes

Description

@gil0mendes

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.
  • (...)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions