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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions