Today we answer a question by a reader… what is basic input output system? Whenever a machine is powered on , the 1st program to run is the Basic Input Output System or BIOS. Basic Input Output System or BIOS is a simple an assembly language program . Primary jobs of BIOS are:
- POST : Performs the Power On Self Test, or POST , to test the peripherals if they are functioning properly at hardware level.
- CPU Initialization : BIOS checks the clock speed of CPU and will put the CPU on realmode. At the time of power on , cpu will be in real mode. In real mode cpu works on direct physical addresses only.
- Memory Probing : BIOS checks for machine’s available primary memory(RAM).
- Basic Devices Initialization : BIOS initializes only those devices which are required to carry out the boot process. For example boot process requires basic I/O devices . So BIOS initializes standard input device and standard output device. Apart from basic I/O it also initializessome controllers like PCI controller, IDE controller. IDE controller are needed because without IDE controllers floppy disks / hard disks cant be read or written.
- Creating Memory Map : BIOS creates real mode memory map or real mode address space. This memory map is always architecture specific. It expects the kernel image to be loaded directly at those addresses. That is why we build the kernel image ( bzImage ) according to the machine’s architecture. The bzImage carries real mode , architecture specific addresses so that it can find those direct addresses and can be loaded there.
- Loading MBR : The last job of BIOS is to find the boot device and to jump to its sector ‘0’ ( boot sector ). BIOS has got access to only sector ’0′ of a boot device. Whatever BIOS finds in sector ‘0’ , it loads that in real mode address space.