Skip to content

operating system and its own microkernel in pure Zig

License

Notifications You must be signed in to change notification settings

xor-bits/hiillos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

948 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hiillos

hiillos is an operating system with its own microkernel all written in pure Zig

The plan is for the kernel to be just a scheduler, an IPC relay, a physical memory manager and a virtual memory manager.

The system design steals borrows ideas from:

  • Zircon: the reference counted capability model
  • seL4: synchronous IPC endpoints and asynchronous signals
  • RedoxOS: optional filesystem schema (URI protocol here) to reference different services, like fs:///etc/hosts, initfs:///sbin/init, tcp://10.0.0.1:80 or https://archlinux.org

Running in QEMU

zig build run # thats it

# read 'Project-Specific Options' from `zig build --help` for more options
zig build run -Dtest=true # include custom unit test runner

# development cli
zig build run --prominent-compile-errors --summary none \
    # one cpu makes debugging more consistent
    -Dcpus=1 \
    # run the GDB server silently, useful for debugging if the system freezes
    -Dgdb=true \
    # compile faster and with debug info
    -Doptimize=Debug \
    # compile root specifically with higher optimization to speed up initfs decompression
    -Doptimize_root=ReleaseSafe \
    # less initfs compression for faster builds
    -Dzst_l=10

Building an IMG

zig build # generates zig-out/hiillos.img

Stuff included here

Stuff not included here

IPC performance

Approximate synchronous IPC performance in a call + replyRecv loop:

// server
while (true) {
    msg = try rx.replyRecv(msg);
}
// client
while (true) {
    try tx.call(.{});
}

Full RTT: ~4181 cycles

Bare metal QEMU+KVM
Intel i7-8750H ? 481ns (2 078 811Hz)
Ryzen 9 5950X ? 342ns (2 915 712Hz)

Gallery

image image image image

About

operating system and its own microkernel in pure Zig

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages