Bare machine

"bare metal" redirects here. For other uses, see bare metal (disambiguation).

Bare machine (or bare metal), in computer parlance, means a computer without its operating system. Modern operating systems evolved through various stages, from elementary to the present day complex, highly sensitive real-time systems. In the very first stage of computing there was nothing like an operating system at all. Programs were fed to the computer system directly using machine language by the programmers without any system software support. This approach is termed the "bare machine" approach in the development of operating systems.

Example

The PDP-11 machine allowed programmers to feed a program, written in machine code, to RAM directly using front panel switches. The resulting execution of the loaded program could be observed using lights mounted on the front cover. The approach was tiresome and not very user friendly, as one would have to load the entire program in machine code each time one wanted to execute the program.

Development

Although the bare machine approach failed, it paved the way for new ideas that pushed the process of OS evolution to its next stage. Bare machine approach brought out a need for the following:

  1. Input/output (I/O) devices to enter both code and data conveniently and output the result of execution in a user friendly manner
  2. Secondary storage devices to store the program to non-volatile memory
  3. Requirement for a convenient high-level language and a translator for such a high-level language to the corresponding machine code
  4. Linkers to link library modules, which may be written by the user or already available in the system
  5. Loaders to load the executables to the primary memory from the secondary storage
  6. Suitable I/O devices like printers for producing a hard-copy of the output generated by the program

Embedded Systems

Bare machine programming remains in common practice in embedded systems, where microcontrollers or microprocessors often boot directly into monolithic, single-purpose software, without loading a separate operating system. Such software can vary in structure, but the simplest form may consist of an infinite main loop, calling subroutines responsible for checking for inputs, performing actions, and writing outputs.

References