||This article includes a list of references, related reading or external links, but its sources remain unclear because it lacks inline citations. (January 2013) (Learn how and when to remove this template message)|
Bare machine (or bare metal), in computer parlance, means a computer without an intervening operating system executing instructions directly on logic hardware. Modern operating systems evolved through various stages, from elementary to the present day complex, highly sensitive systems incorporating many services. After the development of programmable computers (which did not require physical changes to run different programs) but prior to the development of operating systems, sequential instructions were executed on the computer hardware directly using machine language without any system software layer. This approach is termed the "bare machine" precursor to modern operating systems. Today it is mostly applicable to embedded systems and firmware generally with time-critical latency requirements, while conventional programs are run by a runtime system overlaid on an operating system.
The PDP-11 machine 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 mag tape, print devices, or storage.
The bare machine approach 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:
- Input/output (I/O) devices to enter both code and data conveniently and output the result of execution in a user friendly manner
- Secondary storage devices to store the program to non-volatile memory
- Requirement for a convenient high-level language and a translator for such a high-level language to the corresponding machine code
- Linkers to link library modules, which may be written by the user or already available in the system
- Loaders to load the executables to the primary memory from the secondary storage
- Suitable I/O devices like printers for producing a hard-copy of the output generated by the program
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 embedded 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.
- A. Silberschatz, Peter Galvin, and Greg GAGNE. Operating System Concepts.