Skip to content
main
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
doc
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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