Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Global Road Map #1

Open
24 of 43 tasks
gil0mendes opened this issue Jan 14, 2017 · 0 comments
Open
24 of 43 tasks

Global Road Map #1

gil0mendes opened this issue Jan 14, 2017 · 0 comments

Comments

@gil0mendes
Copy link
Member

gil0mendes commented Jan 14, 2017

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.
  • (...)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant