Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/LittleFox94/lf-os_amd64
- Owner: LittleFox94
- License: mit
- Created: 2019-09-04T21:51:21.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2024-04-24T18:48:06.000Z (7 months ago)
- Last Synced: 2024-05-02T04:15:05.110Z (7 months ago)
- Topics: amd64, hobby-os, kernel, lowlevel, microkernel, osdev
- Language: C
- Homepage: https://praios.lf-net.org/littlefox/lf-os_amd64
- Size: 1.73 MB
- Stars: 41
- Watchers: 4
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
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 xAll 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).