Bare machine

Computer without an operating system From Wikipedia, the free encyclopedia

In information technology, a bare machine (or bare-metal computer) is a computer which has no operating system.[1] The software executed by a bare machine, commonly called a bare metal program or bare metal application,[2] is designed to interact directly with hardware. Bare machines are widely used in embedded systems, particularly in cases where resources are limited or high performance is required.[3]

Bare machine computing

Bare Machine Computing is a computing paradigm in which application software runs directly on a bare machine as a single, stand-alone executable, without an operating system or device drivers. The application software has direct access to hardware resources, and there is typically no distinction between user and kernel mode. It is self-managed software that boots, loads and runs without using any other software components. Bare metal programs are typically written in a close-to-hardware language such as C or assembly language.[4]

Advantages

Typically, a bare-metal application will run faster, use less memory and be more power efficient than an equivalent program that relies on an operating system, due to the inherent overhead imposed by system calls. For example, hardware inputs and outputs are directly accessible to bare metal software, whereas they must usually be accessed through system calls when using an OS.[5] It has no OS and therefore has no OS-related vulnerabilities.

Disadvantages

Bare metal applications typically require more effort to develop because operating system services such as memory management and task scheduling are not available.

Debugging a bare-metal program may be complicated by factors such as:

  • Lack of a standard output.
  • The target machine may differ from the hardware used for program development (e.g., emulator, simulator). This forces setting up a way to load the bare-metal program onto the target (flashing), start the program execution and access the target resources.

Examples

Early computers

Early computers, such as the PDP-11, allowed programmers to load a program, supplied in machine code, to RAM. The resulting operation of the program could be monitored by lights, and output derived from magnetic tape, print devices, or storage.

Amdahl UTS's performance improves by 25% when run on bare metal without VM, the company said in 1986.[6]

Embedded systems

Bare machine programming is a common practice in embedded systems, in which microcontrollers or microprocessors boot directly into monolithic, single-purpose software without loading an operating system. Such embedded software can vary in structure. For example, one such program paradigm, known as foreground-background or superloop architecture, consists of an infinite main loop in which each task is executed sequentially and must voluntarily return control back to the loop.[7] The loop runs these cooperative background processes that are not time-critical, while interrupt service routines momentarily interrupt the loop to handle time-critical foreground tasks.[8]

See also

References

Further reading

Related Articles

Wikiwand AI