Английская Википедия:BareMetal

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Other uses

Шаблон:Infobox OS

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[1][2] with a "just enough operating system" (JeOS) approach.[3] 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,[4] and it is a recent example of an operating system that is not written in C or C++, nor based on Unix-like kernels.[5]

Overview

Hardware requirements

  • AMD/Intel based 64-bit computer
  • Memory: 4 MB (plus 2 MB for every additional core)
  • Hard Disk: 32 MB[6]

One task per core

Multitasking on BareMetal is unusual for modern operating systems. 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]

minIP,[16] a minimalist IP stack in ANSI C able to provide enough functionalities to serve a simple static webpage, is being developed as a proof of concept to learn the fundamentals in preparation for an x86-64 assembly re-write planned for the future.

References

Шаблон:Reflist

External links

Шаблон:Hobbyist operating systems

Шаблон:Operating-system-stub

  1. Ошибка цитирования Неверный тег <ref>; для сносок osnews-baremetalos не указан текст
  2. Ошибка цитирования Неверный тег <ref>; для сносок hackday-entirely не указан текст
  3. Ошибка цитирования Неверный тег <ref>; для сносок JeOS-approach не указан текст
  4. Ошибка цитирования Неверный тег <ref>; для сносок osnews-interview не указан текст
  5. Ошибка цитирования Неверный тег <ref>; для сносок distrowatch-weekly не указан текст
  6. Ошибка цитирования Неверный тег <ref>; для сносок ri-baremetal не указан текст
  7. Ошибка цитирования Неверный тег <ref>; для сносок BMO-queue не указан текст
  8. Ошибка цитирования Неверный тег <ref>; для сносок API-doc не указан текст
  9. Ошибка цитирования Неверный тег <ref>; для сносок newlib-announce не указан текст
  10. Ошибка цитирования Неверный тег <ref>; для сносок newlib не указан текст
  11. Ошибка цитирования Неверный тег <ref>; для сносок BareC++-announced не указан текст
  12. Ошибка цитирования Неверный тег <ref>; для сносок BareC++ не указан текст
  13. Ошибка цитирования Неверный тег <ref>; для сносок rust-commit не указан текст
  14. Ошибка цитирования Неверный тег <ref>; для сносок tcpip-request не указан текст
  15. Ошибка цитирования Неверный тег <ref>; для сносок lwIP-announced не указан текст
  16. Ошибка цитирования Неверный тег <ref>; для сносок minIP не указан текст