Skip to content

An object-oriented operating system focused on isolating processes to improve security, portability & scaling

License

Notifications You must be signed in to change notification settings

Norost/norost-b

Repository files navigation

Norost B Operating System

Rust FTW

Norost B is an object-oriented OS built around a microkernel. It is mainly focused on isolating processes from the rest of the system to improve security, portability ∧ scaling.

Features

Object-oriented interface

Files, network sockets …​ are all objects and have a common API. This keeps the interface simple & comprehensible while providing a great amount of flexibility and power.

Any process can create new objects. IPC is performed via operations on objects.

Processes can only perform operations on objects they have a handle to. This makes it trivial to isolate processes from the rest of the system by simply giving it only handles to objects it needs.

Synchronous & Asynchronous I/O (completion model with shared ring queues)

Minimal applications can use the synchronous API to keep the binary small while more advanced applications can take advantage of asynchronous I/O to more efficiently perform batch work.

Applications can also take advantage of shared memory with specialized I/O structures to further reduce overhead.

Networking

Some basic support for networking is present. A basic SSH server and HTTP server are available.

GUI

Applications can allocate a window and draw any arbitrary pixels to it. The tiling window manager automatically handles layout to optimize screen estate.

Other

The kernel is nearly fully preemptible.

Most drivers are outside the kernel, which makes it easier to replace and/or stub them.

Supported architectures

Architecture Supported

x86

x64

✓ with SSE and AVX2

RISC-V

Supported hardware

  • USB: xHCI

Storage

  • VIRTIO block devices

  • USB mass storage devices (BBB)

Graphics

  • Plain framebuffer via multiboot2

  • VIRTIO GPU

  • Intel HD Graphics (very poorly, only on specific laptops with specific boot settings)

Human Interface Devices (HID)

  • PS/2 keyboard & mouse

  • USB HID

Building

Once the compiler is properly configured, mkiso.sh will create a bootable image. run.sh will run the OS in QEMU.

About

An object-oriented operating system focused on isolating processes to improve security, portability & scaling

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages