Skip to content

Commit 0e016b7

Browse files
authored
Merge pull request #130 from ReturnInfinity/master
Updates from master
2 parents 17a89d9 + e0d8b83 commit 0e016b7

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

README.md

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@
88
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
99
[![CI](https://github.com/ReturnInfinity/BareMetal/actions/workflows/main.yml/badge.svg)](https://github.com/ReturnInfinity/BareMetal/actions/workflows/main.yml)
1010

11-
<sub>Exokernel • Pure Assembly • Virtual/Physical</sub>
11+
<sub>Exokernel • 100% Assembly • Virtual/Physical</sub>
1212
</div>
1313

1414
Official repo of the BareMetal [exokernel](http://en.wikipedia.org/wiki/Exokernel). It's written from scratch in Assembly, designed for x86-64 hardware, with no dependencies except for the virtual/physical hardware. An ARM and/or RISC-V rewrite would be considered once hardware is standardized.
1515

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,13 +27,23 @@ 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

29-
![BareMetal Model](./doc/BareMetal-Model.png)
30+
## Architecture
3031

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.
3141

3242
## Key features
33-
* **64-bit**: Make use of the extra-wide and additional registers available in 64-bit mode.
43+
* **BIOS/UEFI**: Both boot methods are supported via the companion Pure64 loader.
44+
* **64-bit only**: Make use of the extra-wide and additional registers available in 64-bit mode.
3445
* **Mono-processing, multi-core**: The system is able to execute a single program but can spread the work load amongst available CPU cores.
35-
* **Extremely tiny memory footprint**: The kernel binary is less than 32KiB. BareMetal uses 4 MiB of RAM while running. The majority of RAM usage is for required memory structures for operating in 64-bit mode, drivers/system buffers, and CPU stacks.
46+
* **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.
3647
* **Physical and virtual hardware support** with full virtualization, using [x86 hardware virtualization](https://en.wikipedia.org/wiki/X86_virtualization) whenever available (it is on most modern x86-64 CPU's). In principle BareMetal should run on any x86-64 hardware platform, even on a physical x86-64 computer, given appropriate drivers. Officially, we develop on [QEMU](http://www.qemu.org) and [VirtualBox](https://www.virtualbox.org), which means that you can run BareMetal on both Linux, Microsoft Windows, and Apple macOS.
3748

3849
## Supported Hardware

0 commit comments

Comments
 (0)