BIOS, in computing, stands for Basic Input/Output System also incorrectly known as Basic Integrated Operating System. BIOS refers to the firmware code run by an IBM compatible PC when first powered on. The primary function of the BIOS is to prepare the machine so other software programs stored on various media (such as hard drives, floppies, and CDs) can load, execute, and assume control of the PC. This process is known as booting up.
BIOS can also be said to be a coded program embedded on a chip that recognizes and controls various devices that make up the PC. The term BIOS is specific to personal computer vendors. Among other classes of computers, the generic terms boot monitor, boot loader or boot ROM are commonly used.
The term first appeared in the CP/M operating system, describing the part of CP/M loaded during boot time that interfaced directly with the hardware (CP/M machines usually had a simple boot loader in ROM, and nothing else). Most versions of DOS have a file called "IBMBIO.COM" or "IO.SYS" that is analogous to the CP/M disk BIOS.
How the BIOS boots
The BIOS runs off the PROM, EPROM or, most commonly, flash memory when the computer is powered on. It initializes several motherboard components and peripherals, including:
- the clock generator,
- the processors and caches,
- the chipset (memory controller and I/O controller),
- the system memory,
- all PCI devices (by assigning bus numbers and resources),
- the primary graphics controller,
- mass storage controllers (such as SATA and IDE controllers),
- various I/O controllers (such keyboard/mouse and USB).
Finally, it loads the boot loader for the operating system, and transfers control to it. The entire process is known as Power-on self-test (POST). On the original IBM PC, the hardware only needed minimal configuration and POST was indeed used for testing; on modern systems, most of POST actually consists in hardware configuration.
Once system memory is initialized, the BIOS typically copies/decompresses itself into that memory and keeps executing from it.
Nearly all BIOS implementations can optionally execute a setup program interfacing the nonvolatile BIOS memory (CMOS). This memory holds user-customizable configuration data (time, date, hard drive details, etc.) accessed by BIOS code. The 80×86 source code for early PC and AT BIOS was included with the IBM Technical Reference Manual.
In most modern BIOS implementations, users select which device boots first: CD, hard disk, floppy disk, flash keydrive and the like. This is particularly useful for installing operating systems or booting to Live CDs, and for selecting the order of testing for the presence of bootable media.
Some BIOS’s allow the user to select the operating system to load (e.g. load another OS from the second hard disk), though this is more often handled by a second-stage boot loader.