# Shelter Docs

## Introduction

Shelter is an hybrid kernel developped alongside and for the Vystem project. 

## Principles

Shelter stricly follow these principles:
- absolutely no external code inside it. All the code that run in ring 0 should be sovereign
- absolutely no UNIX dependency on design philosophy. Shelter follow his own rules for kernel design (but doesn't forbid itself to reuse somes UNIX concepts), even if it mean spending years designing, refining and standardizing them
- a very strict boot process that ensure that everything goes well during the system boot
- fully made in C
- focuses on auditability, self-testing and benchmarking, and determinism
- use his own algorithms for various very important components of every kernel (mainly memory management, scheduling, etc), except on cryptographic algorithms, which follow a very strict integration processus

The Shelter kernel is currently in very early developpement stage and isn't suitable at all for every-day usage.

## Summary

- Key principles to know in order to boot Shelter
  - [Kernel bootstrapping using keycard](keycard.md)
  - [Introduction to Pages Table Pool](ptp.md)
  - [Shelter kernel boot configuration](bootconfig.md)
  - [Shelter kernel memory map layout](memmap.md)
  - [Shelter boot contract](bootcontract.md)
- [Shelter Boot Process](bootprocess.md)
- [Naming scheme](naming.md)
- Detailled components
  - [CPU abstraction](cpu/cpuabstract.md)
  - [Shelter standard library](std/std.md)
  - [Kernel-specific APIs](kernel/kernel.md)
  - [Memory subsystem](memory/index.md)
  - [Test-and-benchmark framework](tab.md)
- [Benchmark results](bench.md)
