Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/LittleFox94/lf-os_amd64

Hobby operating system for amd64 with high ambitions - mirror
https://github.com/LittleFox94/lf-os_amd64

amd64 hobby-os kernel lowlevel microkernel osdev

Last synced: 3 months ago
JSON representation

Hobby operating system for amd64 with high ambitions - mirror

Awesome Lists containing this project

README

        

# 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!](https://twitter.com/0x0a_fox/status/1386095877165551616)

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