BareMetal
<templatestyles src="Module:Hatnote/styles.css"></templatestyles>
Lua error in Module:Infobox at line 199: malformed pattern (missing ']').
BareMetal is an exokernel-based single address space operating system (OS) created by Return Infinity.
It is written in assembly to achieve high-performance computing with minimal footprint[2][3] with a JeOS approach.[4] The operating system is primarily targeted towards virtualized environments for cloud computing, or HPCs due to its design as a lightweight kernel (LWK). It could be used as a unikernel.
It was inspired by another OS written in assembly, MikeOS,[1] and it is a current-day example of an operating system that is not written in C or C++, nor based on Unix-like kernels.[5]
Contents
Overview
Hardware requirements[6]
- Intel/AMD-based 64-bit computer
- Memory: 4 MB (plus 2 MB for every additional core)
- Hard Disk: 32 MB
One task per core
Multitasking on BareMetal is unusual for operating systems in this day and age. BareMetal uses an internal work queue that all CPU cores poll. A task added to the work queue will be processed by any available CPU core in the system and will execute until completion, which results in no context switch overhead.[7]
Programming
API
An API is documented[8] but, in line with its philosophy, the OS does not enforce entry points for system calls (e.g.: no call gates or other safety mechanisms).
C
BareMetal OS has a build script to pull the latest code, make the needed changes, and then compile C code using[9] the Newlib C standard library.[10]
C++
A mostly-complete C++11 Standard Library was designed and developed for working in ring 0.[11] The main goal of such library is providing, on a library level, an alternative to hardware memory protection used in classical OSes, with help of carefully designed classes.[12]
Rust
A Rust program demonstration was added to the programs in November 2014, demonstrating the ability to write Rust programs for BareMetal OS.[13]
Networking
TCP/IP stack
A TCP/IP stack was the #1 feature request.[14] A port of lwIP written in C was announced in October 2014.[15]
References
<templatestyles src="Reflist/styles.css" />
Cite error: Invalid <references>
tag; parameter "group" is allowed only.
<references />
, or <references group="..." />
External links
- ReturnInfinity on GitHub
- BareMetal OS Google Group discussion forum
<templatestyles src="Asbox/styles.css"></templatestyles>
- ↑ 1.0 1.1 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.