IllinixOS is an rv64g operating-system kernel we wrote: preemptive multitasking,
fork/exec, Sv39 virtual memory, an ELF loader, and a virtio
block-device filesystem. This page runs that kernel live in the browser. QEMU is
compiled to WebAssembly here in order to boot it; the kernel and disk image here
are the same ones that run under native QEMU. This was built as the final project for ECE 391 (Computer
Systems Engineering) at the University of Illinois Urbana-Champaign.
Or type a name in the shell:
donut life maze sort
trek rule30 fibfib
The kernel starts in machine mode at 0x80000000, sets up PMP and trap delegation, then drops to supervisor mode. No firmware underneath.
Sv39 page tables map the kernel and devices. The timer and PLIC interrupt controller are brought up.
A virtio-blk MMIO device is negotiated and the on-disk filesystem (kfs.raw) is mounted. The user programs live there.
The kernel execs the shell (termio) on UART1. A program forks and execs a child.
virt board with extra NS16550 UARTs for the multi-console setup.