Skip to content

Commit e0d8b83

Browse files
authored
Add Architecture section to README
Added an Architecture section explaining the kernel's design and target environments.
1 parent 167c876 commit e0d8b83

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Official repo of the BareMetal [exokernel](http://en.wikipedia.org/wiki/Exokerne
1616
### Table of Contents
1717

1818
- [What it is](#what-it-is)
19+
- [Architecture](#architecture)
1920
- [Key features](#key-features)
2021
- [Supported hardware](#supported-hardware)
2122
- [Try it out](#try-it-out)
@@ -26,7 +27,20 @@ BareMetal is a _very_ lean kernel. The name is a play on the phrase "bare metal"
2627

2728
BareMetal provides basic support for symmetric multiprocessing, network, and storage access via a low-level abstraction layer.
2829

30+
## Architecture
31+
32+
BareMetal is an [exokernel](https://en.wikipedia.org/wiki/Exokernel) and offers a [single address space](https://en.wikipedia.org/wiki/Single_address_space_operating_system) system.
33+
34+
It is written in [assembly](https://en.wikipedia.org/wiki/Assembly_language) to achieve high-performance computing with a minimal footprint and a "[just enough operating system](https://en.wikipedia.org/wiki/JeOS)” approach.
35+
36+
The kernel is primarily targeted towards physical and [virtualized](https://en.wikipedia.org/wiki/Virtualization) environments for [cloud computing](https://en.wikipedia.org/wiki/Cloud_computing), or [HPC](https://en.wikipedia.org/wiki/High-performance_computing) clusters. It could also be used as a [unikernel](https://en.wikipedia.org/wiki/Unikernel).
37+
38+
> “Do not try to do everything. Do one thing well.” — Steve Jobs
39+
40+
The premise of the kernel is to "do one thing well" and that is to execute a program with zero overhead.
41+
2942
## Key features
43+
* **BIOS/UEFI**: Both boot methods are supported via the companion Pure64 loader.
3044
* **64-bit only**: Make use of the extra-wide and additional registers available in 64-bit mode.
3145
* **Mono-processing, multi-core**: The system is able to execute a single program but can spread the work load amongst available CPU cores.
3246
* **Extremely tiny memory footprint**: The kernel binary is less than 32KiB. BareMetal uses 4 MiB of RAM while running. The majority of its RAM usage is for required memory structures while operating in 64-bit mode, drivers/system buffers, and CPU stacks. All other system memory is dedicated to the running program.

0 commit comments

Comments
 (0)