History of The Computer – The Bootstrap
In previous articles in the History of the Computer series we discussed machine codes, programs, and memories. We also mentioned that many types of memory are volatile, that is, if we remove power, the memory loses it’s data. So how did the data in your computer right now get there? Is this like the Big Bang theory of the universe? Did it just appear? If you’ve ever had to reload an operating system, plus all the other programs you use, you’ll know it’s no simple task to get it onto the disk! After that you have to get it into memory – every time you ‘boot’!
What do we mean by boot? My old instructor on my first computer engineering course called it a ‘bootstrap binary loader’. That’s a clue! The term is said to have originated from fictitious tales of a German character you may have heard of, Baron von Munchhausen.
His exploits were serialized in comic strips and the like, along with Dick Tracey etc. One famous tale had him riding a cannonball and, deciding it wasn’t such a good idea, swapping to an enemy cannonball going in the opposite direction, to return to his side.
The outrageous tale we are concerned with here refers to the time when he fell into a swamp, but was able to save himself by pulling himself out by his hair. Later versions of this tale had him lifting himself up by his own bootstraps. This expression ‘pulling yourself up by your own bootstraps’ was common at one time. It meant to get yourself out of your own problems.
All this doesn’t have much to do with computers, but it describes the way they start up!
Early digital computers were loaded from paper tape or punch cards, later magnetic tape, and then disk. You may know that before Windows there was DOS, which refers to a Disk-based Operating System.
On a mainframe computer there is an operating system, which acts as an interface between the machine and the user. This OS is variously known as the ‘Exec’ (Executive) or ‘MCP’ (Master Control Program) etc. dependent on the proprietary computer system in use. (New employees were surprised to learn that they had to ‘boot the exec every morning’ – a high turnover of CEOs?). This is roughly equivalent to the Windows or Linux operating system on your PC.
The OS handles all input from users, allocates time slices and prioritizes jobs, controls print jobs, allocates mass storage, etc. When you talk to the computer, it only hears what the OS tells it! The OS can talk to the computer in its own language. So the OS must be capable of loading itself from a disk or tape into memory.
To do this, we have a system whereby a block of data, known as a ‘boot block’, and located at the very first block of a paper tape, or magnetic tape, or address 00 on a disk, is read into memory at location zero onwards. This ‘boot command’ is usually a Read instruction from address 00 on device 00.
The data, contained in the boot block, loads the necessary buffer areas to handle an I/O transfer of data in the ‘reserved’ area of memory etc., ready for communication with the boot device, for example the disk containing the OS. Having set up all the necessary buffers, the computer reads and executes the instructions from 00 onwards. These instructions, just loaded from the disk boot block, finish the setup process.
The final instruction from the boot block is a read command to the disk, to load the rest of the data for the OS. This data overwrites the boot block data in memory with the normal data required for running the system. Once the data is loaded the OS can start operations.
It must initialize all the subsystems, and check what resources are available. It needs to know how much memory there is, what data is available on mass storage, what network resources are available, etc. To do this it may refer to a previous configuration, which it then compares to what it can see now. Alternatively, for a ‘clean’ boot it checks what resources it has and works from there.