Jump to content

BareMetal

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 75.117.135.225 (talk) at 10:29, 3 January 2017 (rm red link). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

BareMetal
DeveloperReturn Infinity
Written inAssembly
Working stateCurrent
Source modelOpen source
Initial release2008; 16 years ago (2008)
Latest release0.6.0 / April 30, 2013; 11 years ago (2013-04-30)
Marketing targetHPCs, HTC, Cloud computing
Available inEnglish
Platformsx86-64
Kernel typeExokernel, SASOS
UserlandUnknown
Default
user interface
Command-line
LicenseBSD License[1]
Official websitewww.returninfinity.com/baremetal.html

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]

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

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

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]

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]

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

  1. ^ a b Voorsanger, Conrad (June 2, 2011). "Interview With Baremetal OS' Ian Seyler". OSNews. Retrieved May 26, 2014.
  2. ^ Adams, David (July 14, 2010). "BareMetal OS". OSNews. Retrieved May 26, 2014.
  3. ^ Benchoff, Brian (May 27, 2011). "64-bit OS written entirely in assembly". Hack A Day. Retrieved May 26, 2014.
  4. ^ Seyler, Ian. "Return Infinity (home page), The BareMetal advantage". Return Infinity. Retrieved February 2, 2015.
  5. ^ Smith, Jesse (July 19, 2010). "DistroWatch Weekly, Issue 363". DistroWatch. Retrieved May 26, 2014.
  6. ^ "BareMetal OS Requirements". Return Infinity (archived copy at Wayback Machine). Archived from the original on September 6, 2014. Retrieved September 6, 2014. {{cite web}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)
  7. ^ "BareMetal OS Queue". Retrieved April 28, 2015.
  8. ^ Seyler, Ian. "API documentation". BareMetal OS GitHub repository. Retrieved June 26, 2015.
  9. ^ Seyler, Ian (January 17, 2014). "Newlib build script". BeareMetal OS Google Group. Retrieved February 2, 2015.
  10. ^ Seyler, Ian. "newlib.sh". Build scripts for BareMetal OS and its related utilities, GitHub repository. Retrieved February 2, 2015.
  11. ^ Lodyagin, Sergei (November 17, 2013). "Bare C++ library". BeareMetal OS Google Group. Retrieved February 2, 2015.
  12. ^ Lodyagin, Sergei. "The Bare C++ library". The Bare C++ library GitHub repository. Retrieved February 2, 2015.
  13. ^ Seyler, Ian. "Add Rust example". BareMetal OS GitHub repository. Retrieved April 13, 2015.
  14. ^ Seyler, Ian (August 22, 2013). "TCP/IP". BeareMetal OS Google Group. Retrieved February 2, 2015.
  15. ^ Seyler, Ian (October 31, 2014). "BareMetal and lwIP". BeareMetal OS Google Group. Retrieved February 2, 2015.