HIC – A hierarchical isolation kernel with physical sandboxing and sub‑5ns capability checks
Posted: Sun Mar 01, 2026 3:11 am
I've been working on an experimental kernel called HIC (Hierarchical Isolation Core) and would love to get feedback from this community.
**What is HIC?**
HIC explores a three‑tier privilege model:
- Core‑0: a tiny (~10K LOC) trusted component that manages capabilities and physical resources.
- Privileged‑1: system services run in *physically isolated sandboxes* – they execute at the same CPU privilege level as Core‑0 but have independent memory regions enforced by the MMU.
- Application‑3: normal user processes.
**Key design points**
- *Physical space direct mapping*: Each Privileged‑1 service gets a contiguous physical memory region. This avoids TLB flushes when calling services and eliminates virtual memory overhead for those services.
- *Ultra‑fast capability system*: Capabilities are 64‑bit tokens (16‑bit domain ID + 48‑bit capability ID) validated in ~13 instructions (<5ns at 3GHz, based on instruction counting). The fast path is inlined.
- *Rolling upgrades with zero downtime*: Services can be updated without disconnecting clients. The Module Manager coordinates state migration, connection handover, and automatic rollback (design docs available).
- *Portability*: CHAL/AAL/IMAL layers abstract hardware differences – currently targeting x86‑64, ARMv8‑A, RISC‑V, and no‑MMU variants.
**Current status**
- **Custom bootloader**: Supports UEFI on x86_64 (hardware initialization, kernel image loading/verification, boot info passing). Designed with portability in mind (ARM, RISC‑V planned).
- **Core‑0 kernel**: Can boot on x86_64 QEMU via the custom UEFI bootloader, but the kernel is **very unstable and frequently crashes** – it's extremely early days.
- **Module Manager & rolling updates**: The code exists but has **not been successfully tested** – module loading and rolling update flows are not yet functional.
-
*Extremely early prototype* – runs only on QEMU, unstable, APIs will change, no real hardware support yet. Documentation is more mature than the code.
**Documentation & code**
- Design docs (three‑tier model, rolling updates, portability): https://github.com/DslsDZC/HIC/tree/main/docs
- Repo: https://github.com/DslsDZC/HIC(the code is a work in progress – expect rough edges)
I'm particularly interested in feedback on:
- The physical contiguous allocation approach – how do you handle fragmentation? (We use a combination of static build‑time allocation, a buddy allocator with slab caches, and an emergency reserve – details in the portability doc.)
- The capability system design – any pitfalls I should be aware of?
- Suggestions for ARM/RISC‑V ports.
Thanks for reading – happy to answer any questions!
**What is HIC?**
HIC explores a three‑tier privilege model:
- Core‑0: a tiny (~10K LOC) trusted component that manages capabilities and physical resources.
- Privileged‑1: system services run in *physically isolated sandboxes* – they execute at the same CPU privilege level as Core‑0 but have independent memory regions enforced by the MMU.
- Application‑3: normal user processes.
**Key design points**
- *Physical space direct mapping*: Each Privileged‑1 service gets a contiguous physical memory region. This avoids TLB flushes when calling services and eliminates virtual memory overhead for those services.
- *Ultra‑fast capability system*: Capabilities are 64‑bit tokens (16‑bit domain ID + 48‑bit capability ID) validated in ~13 instructions (<5ns at 3GHz, based on instruction counting). The fast path is inlined.
- *Rolling upgrades with zero downtime*: Services can be updated without disconnecting clients. The Module Manager coordinates state migration, connection handover, and automatic rollback (design docs available).
- *Portability*: CHAL/AAL/IMAL layers abstract hardware differences – currently targeting x86‑64, ARMv8‑A, RISC‑V, and no‑MMU variants.
**Current status**
- **Custom bootloader**: Supports UEFI on x86_64 (hardware initialization, kernel image loading/verification, boot info passing). Designed with portability in mind (ARM, RISC‑V planned).
- **Core‑0 kernel**: Can boot on x86_64 QEMU via the custom UEFI bootloader, but the kernel is **very unstable and frequently crashes** – it's extremely early days.
- **Module Manager & rolling updates**: The code exists but has **not been successfully tested** – module loading and rolling update flows are not yet functional.
-
**Documentation & code**
- Design docs (three‑tier model, rolling updates, portability): https://github.com/DslsDZC/HIC/tree/main/docs
- Repo: https://github.com/DslsDZC/HIC(the code is a work in progress – expect rough edges)
I'm particularly interested in feedback on:
- The physical contiguous allocation approach – how do you handle fragmentation? (We use a combination of static build‑time allocation, a buddy allocator with slab caches, and an emergency reserve – details in the portability doc.)
- The capability system design – any pitfalls I should be aware of?
- Suggestions for ARM/RISC‑V ports.
Thanks for reading – happy to answer any questions!