Skip to content

Hobby operating system for amd64 with high ambitions - mirror

License

Notifications You must be signed in to change notification settings

LittleFox94/lf-os_amd64

Folders and files

NameName
Last commit message
Last commit date
Jan 7, 2021
Jan 12, 2025
Apr 9, 2024
Oct 19, 2020
Jan 12, 2025
Mar 21, 2024
Mar 6, 2022
Jul 3, 2021
Jul 3, 2021
Jan 12, 2025
Apr 18, 2024
Feb 22, 2022
Jan 13, 2021
Dec 28, 2024
Jan 14, 2024
Dec 29, 2024
Mar 11, 2021
Jul 20, 2020
Jan 2, 2021
Apr 24, 2021
Jan 10, 2024

Repository files navigation

LF OS

This is the 5th(?) attempt at writing an operating system from scratch, where "attempt" means: starting from zero.

Development mainly happens on my Gitlab at https://praios.lf-net.org/littlefox/lf-os_amd64 - check it out!

It can run Doom!

Key difference to previous attempts

  • amd64, why use i386 like everyone else when I did not even manage to get a working system there?
  • uefi and custom loader, why use Grub like everyone else when I did not even ...... ^
  • I'm actually able to program things now
    • I actually became a good software developer in the meantime
    • first attempt was even before finishing school
  • there are some docs
  • I thought about system design and even wrote some things down
  • I don't write throw-away code or just paste tutorials right now
    • maybe later in user space though

Design

This will be a microkernel providing the following inside the kernel

  • base system initialization (CPU, physical memory, common bus systems)
  • memory management for processes (virtual memory)
  • inter-process communication facilities
    • mostly via shared memory and message queues
    • later also via helper userspace programs to make communication between processes A and B over an arbitrary channel between C and D, where A, B, C and D may run on different computers
    • IPC between different computers will be transparent to processes in a later version
  • service registry
    • processes announce services (file system, block device, character device, ...)
    • other processes need services
    • ask kernel for process implementing service x
    • IPC to process for service x

All drivers for special hardware (everything not attached to a common bus) are userspace programs that will be designed to recover after crashed. They can store a small amount of information in the kernel (like hard disk x is fully initialized, just read from address $y and port $x) and when they crash, they are just restarted.

Since IPC between processes running on different computers is planned to be transparent, it's actually possible to run a single instance of LF OS on a whole data center (or bigger, but latency).