All Projects → patrick-lafferty → saturn

patrick-lafferty / saturn

Licence: other
A microkernel based operating system developed from scratch. This repository also includes all Saturn services and applications.

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
assembly
5116 projects
Makefile
30231 projects
shell
77523 projects
CMake
9771 projects
Scilab
70 projects

Projects that are alternatives of or similar to saturn

Toaruos
A completely-from-scratch hobby operating system: bootloader, kernel, drivers, C library, and userspace including a composited graphical UI, dynamic linker, syntax-highlighting text editor, network stack, etc.
Stars: ✭ 4,687 (+22219.05%)
Mutual labels:  x86-64, osdev, operating-system, window-manager, smp, baremetal
MoonOS
MoonOS (just a kernel atm) is a micro kernel designed for the x86_64 and arm architecure.
Stars: ✭ 82 (+290.48%)
Mutual labels:  x86-64, osdev, operating-system, microkernel
biefircate
Running x86-16 or x86-32 code from x86-64 UEFI; _very experimental_ • mirror of https://gitlab.com/tkchia/biefircate • developer notes at https://gitlab.com/tkchia/biefircate/-/blob/main/doc/NOTES.asciidoc
Stars: ✭ 47 (+123.81%)
Mutual labels:  x86-64, osdev, operating-system, baremetal
kwast
Rust operating system running WebAssembly as userspace in ring 0
Stars: ✭ 83 (+295.24%)
Mutual labels:  x86-64, osdev, operating-system, microkernel
Cyjon
A simple, clean code, multi-tasking operating system written in pure assembly language for 64-bit processors from the AMD64 family.
Stars: ✭ 184 (+776.19%)
Mutual labels:  x86-64, osdev, operating-system, window-manager
Wingos
a little 64bit operating system written in c++ with smp support
Stars: ✭ 361 (+1619.05%)
Mutual labels:  x86-64, osdev, operating-system
Toaru Nih
NOTICE: The ToaruOS-NIH Project has been MERGED UPSTREAM. This repository is now archived.
Stars: ✭ 66 (+214.29%)
Mutual labels:  osdev, operating-system, window-manager
Cuteos
A 64-bit SMP-safe kernel for the PC architecture.
Stars: ✭ 51 (+142.86%)
Mutual labels:  x86-64, osdev, operating-system
Aqeous
(Inactive, Checkout AvanaOS, Rewrite of this) This is a New Operating System (Kernel right now). Made completely from scratch, We aim to make a complete OS for Learning purpose
Stars: ✭ 23 (+9.52%)
Mutual labels:  osdev, operating-system, smp
Nebulet
A proof-of-concept microkernel that implements a WebAssembly "usermode" that runs in Ring 0.
Stars: ✭ 2,237 (+10552.38%)
Mutual labels:  osdev, operating-system, microkernel
Dennix
Dennix is a unix-like hobbyist operating system written from scratch.
Stars: ✭ 53 (+152.38%)
Mutual labels:  x86-64, osdev, operating-system
poplar
Microkernel and userspace written in Rust exploring modern ideas
Stars: ✭ 217 (+933.33%)
Mutual labels:  osdev, operating-system, microkernel
duckOS
Yet another hobby x86 UNIX-like operating system written in C and C++. Features a dynamically linked userspace, an in-house c standard library, and more! And yes, it runs DOOM.
Stars: ✭ 250 (+1090.48%)
Mutual labels:  osdev, operating-system, baremetal
rust os
My hobby operating system microkernel written in Rust
Stars: ✭ 33 (+57.14%)
Mutual labels:  osdev, operating-system, microkernel
chaos-2
A hand-made SMP-aware kernel
Stars: ✭ 20 (-4.76%)
Mutual labels:  osdev, operating-system, smp
SynnixOS
Hobbyist Operating System targeting x86_64 systems. Includes userspace, Virtual File System, An InitFS (tarfs), Lua port, easy porting, a decent LibC and LibM, and a shell that supports: piping, file redirection, and more.
Stars: ✭ 40 (+90.48%)
Mutual labels:  x86-64, osdev, operating-system
KnutOS
An x86_64 hobbyist OS written in C and Assembly
Stars: ✭ 16 (-23.81%)
Mutual labels:  x86-64, osdev, operating-system
munix
🦠 µnix is a UNIX-like operating system
Stars: ✭ 57 (+171.43%)
Mutual labels:  osdev, operating-system, microkernel
utero
The Operating System (for x86_64) written in Crystal as much as possible
Stars: ✭ 55 (+161.9%)
Mutual labels:  x86-64, osdev, operating-system
Dgos
Operating System
Stars: ✭ 90 (+328.57%)
Mutual labels:  x86-64, osdev, operating-system

Saturn

Saturn is a new operating system I started in Oct 2017. It is a 64-bit microkernel with multitasking and IPC based around asynchronous message passing. With the exception of LLVM's libc++ and FreeType, the entire system and services are being written from scratch by me in C++. Saturn is not just the kernel, it encompases all the services and drivers needed to provide a complete desktop system.

The repository is organized into simple sections. The entire kernel is under src/kernel, all services including Apollo are under src/services, and applications can be found in src/applications.

Features

Latest Screenshot
Dsky application demonstrating Gemini interpreter

Apollo

Apollo is Saturn's UI framework. Apollo has a tiled window manager that divides up the screen into tiles. One of the main goals of Apollo is to support rapid UI prototyping. To accomplish this, Apollo uses a declarative layout language called Mercury. By editing Mercury files you can easily create and modify an application's UI.

(grid

    (rows (fixed-height 50) (proportional-height 1))
    (columns (fixed-width 50) (proportional-width 1))

    (items
        
        (label (caption "This is a label")
            (alignment (vertical center))
            (padding (horizontal 10))
            (meta (grid (column 1))))

        (list-view
            (meta (grid (row 1) (column-span 2)))
            (item-source (bind entries))

            (item-template
                (label (caption (bind content))
                    (background (bind background))
                    (font-colour (bind fontColour)))))))

Apollo also makes heavy use of databinding. Certain UI elements like Labels expose properties that are 'bindable', such as caption and background. You can define properties in your application and then 'bind' them to elements, and when your values change it automatically updates the appropriate UI element.

Note that the example also shows item templates. You can create a collection of some user-defined struct, and by defining an item template you tell Apollo how to create UI elements from that struct.

Vostok

Vostok is Saturn's Virtual Object System. It allows you to access objects exposed to the virtual file system just like files. Objects can have properties as well as callable functions, providing an RPC mechanism. By opening an object and writing arguments to one of its functions, you can invoke a function call in a separate process and read the results, just by using the filesystem. In the Dsky screenshot above, /system/hardware/cpu is actually a Vostok object, with a nested Id object that has a brand property.

A core feature of Vostok is introspection. By reading a Vostok object, you can discover all of the properties and functions they expose, as well as their types. By reading a function you get the function's signature, ie its input and output types.

/system/hardware/pci/host0/2/0 is the first PCI function on the third device. As you can see from the screenshot, by reading an object itself, you can find out what an object supports and how to interact with it.

Latest Screenshot

This screenshot shows the new Taskbar app that lists open applications and highlights the app with input focus. It also shows the Transcript app which creates structured logs events from the EventSystem, and allows you to filter the logs using a Gemini expression.

Testing

As Saturn is still in its very early stages, there are no releases yet.

Building

Saturn is currently undergoing a major overhaul and thus isn't runnable, but the build system has now been improved to the point where user builds are possible. This section is just for reference for the time being.

Requirements

  • clang >= 5.0
  • svn
  • yasm >= 1.3
  • cmake >= 3.11
  • patch >= 2.7.6
  • automake exactly 1.15
  • autoconf exactly 2.69
  • grub2-mkrescue

Setup

git clone https://github.com/patrick-lafferty/saturn.git

cd saturn

make

Running

Qemu:

make qemu

Bochs:

make bochs

VirtualBox:

make virtualbox

License

Saturn uses the 3-clause BSD license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].