Khaled Hammouda
Home
Fusion OS
NimJet
Home
Fusion OS
NimJet
  • Fusion OS
    • Writing an OS in Nim
    • Environment Setup
    • Targeting UEFI (Part 1)
    • Targeting UEFI (Part 2)
    • UEFI Bootloader (Part 1)
    • UEFI Bootloader (Part 2)
    • Kernel Image
    • Loading the Kernel (Part 1)
    • Loading the Kernel (Part 2)
    • Loading the Kernel (Part 3)
    • Physical Memory
    • Virtual Memory
    • Higher Half Kernel
    • Memory Segments
    • Interrupts
    • User Mode
    • Task State Segment
    • System Calls
    • Tasks
    • Position Independent Code
    • ELF Loader (Part 1)
    • ELF Loader (Part 2)
    • Cooperative Multitasking
    • System Library
    • Interrupt Controller

Fusion OS

This is both a documentation and a tutorial for building an operating system, Fusion OS, from scratch in Nim. You can find the source code on GitHub at https://github.com/khaledh/fusion.

Note: The source for this documentation is on GitHub at https://github.com/khaledh/khaledh.github.io. Comments and contributions are welcome through GitHub issues and pull requests.

Screenshots

UEFI Bootloader

UEFI Bootloader

GUI (Note: This screenshot is from the graphics branch, which is still a work-in-progress.)

Screenshot from the graphics branch

Booting and Running the Kernel

Booting and Running Fusion Kernel

Features

The following features are currently implemented:

  • UEFI Bootloader
  • Memory Management
    • Single Address Space
    • Physical Memory Manager
    • Virtual Memory Manager
    • Higher Half Kernel
  • Task Management
    • Kernel Tasks
    • User Mode Tasks
    • Preemptive Multitasking
    • Priority-based Scheduling
    • ELF Loader
  • System Calls
    • System Call Interface
    • SYSCALL/SYSRET
    • User Mode Library
  • IPC
    • Synchronization Primitives
    • Channel-based IPC
    • Message Passing
  • Hardware
    • Timer Interrupts
    • PCI Device Enumeration
    • Bochs Graphics Adapter Driver

Planned

  • Capability-based Security
  • Event-based Task State Machines
  • Demand Paging
  • Disk I/O
  • File System
  • Keyboard/Mouse Input
  • Shell
  • GUI
  • Networking
Last Updated: