diff --git a/README.md b/README.md index be5ec5f..cb9d1d2 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,31 @@ Codename: Shodan Version: 1 -A small operating system, written from scratch in Zig — a bootloader (`boot/`) -and a microkernel (`system/kernel/`), sharing a neutral handoff contract (`system/boot-handoff.zig`). -It boots x86-64 via UEFI, and so far has a framebuffer console, a physical frame -allocator, its own paging with W^X permissions, interrupt/exception handling, a -LAPIC timer, a kernel heap, a fixed-priority preemptive scheduler, and in-kernel IPC -channels. See [`docs/`](docs/README.md) for how each piece works. +A small resilient operating system, written from scratch in Zig. + +## Zen of DanOS: + +- Resilient Micro-Kernel Architecture. + - Every process run in an isolated user space not kernel space. + - Processes cannot take down the entire OS with it when they die or is killed +- Stable public runtime library, private OS ABI. + - Keeps a stable runtime for user space processes between OS versions (great for backwards compatibility) + - Allows the underlying OS to be changed without effecting applications + - Provides a boundary to enable compatibility between OS's e.g. POSIX, MUSL etc +- Drivers are just isolated processes in user space. + - Thin binaries that can be restarted like applications. + - Useful during driver development. + - Drivers can claim MMIO / ports + - Driver resources (e.g. IRQ/Port/MMIO) claims are automatically cleaned up if the driver dies or is killed + - Drivers can also hook into the process lifecyle to clean up or reset hardware +- No legacy to deal with + - Zig code uses a clean coding style (Zen of Zig) + - Favor reading code over writing code. + - No magic numbers. + - No shortend names unless its for ABI compatibility or acronyms +- Inter-Process Communication (IPC) + - Publish and subscribe to Asynchronous Messages + - Talk to services and processes synchronously ## Prerequisites @@ -60,7 +79,7 @@ straight into CI. ## Documentation -Design notes explaining the *why* behind the code live in +Design notes explaining *why* behind the code live in [`docs/`](docs/README.md) — start with [`docs/README.md`](docs/README.md). ## Logo