In the very earliest days of computing, the only way to get information into a computer – including the instructions to tell it what to do – was via a row of switches across the front of the machine. The operator would approach the computer with a written list of what switches to press and in what order, and by the end of the switch-pressing session – provided the operator had got it right – the computer would have possession of both the data and the program it was supposed to run. Naturally enough, computer programmers soon got tired of switch-flipping, and better ways were devised to store and enter information.
The most popular of these for many years was punch cards. These were made in the same shape and size as the Hollerith cards that had been used for US censuses since 1911. This happens to be the same size as a US dollar bill in 1911, since the Hollerith system had been based on existing money-handling machines. Since then dollar bills have shrunk, in size as well as in value, but punch cards have remained the same size and shape. They were in constant use well into the 1980s, and many big companies still have their old punch cards collections sitting around in drawers somewhere, just in case these new-fangled hard disks and DVD drives turn out to be a flash in the pan.
Using punch cards allows an operator to type in the data and program only once, using a card punch machine – which looked and worked like a huge and very clumsy typewriter* – and feed it into the computer as many times as necessary. Mistakes can be corrected and new data entered by changing individual cards rather than having to re-type the entire stack.
After punch cards came magnetic tape, and with magnetic tape came a new problem. Up till now the computer only had access to one program at a time. It read in the cards, ran the program, and then sat idle until another set of cards (or the same one again) was fed in. But one magnetic tape can store hundreds of programs and data sets. Now computers needed a way to hunt through a tape and find one program out of many. And when computers started writing their output on to tape as well, instead of printing it straight out as they had done before, things got more complicated still.
Enter our hero, the operating system. From being passive machines that were switched on when a program was entered and switched off when they finished running it, computers soon became smart devices that could find and queue programs to run, locate empty storage space on tapes or disks in which to write their output, and give those spaces names so they could find them later. Programs and data both became ‘files’ on the computer’s system, to be combined in various ways. And all because of a special kind of program – an operating system (OS) – which can do three basic but terribly important things:
- Start when the computer is switched on, and work constantly in the background while the computer is running.
- Keep track of storage, including the location of files and empty space, and record any changes that are made by programs or other instructions.
- Provide users with access to the files and data that they need.
Those are the fundamentals. Any program which can do all this is an operating system, even though it has no other capabilities. But of course, like other types of software, operating systems soon began to grow in size and complexity, taking on many other functions. Some of these had been done in the past by other programs; some hadn’t been done at all. But by the time personal computers appeared on people’s desks in the mid-1970s, it was expected that an OS would be able to:
- Read and display the contents of both fixed and replaceable storage media, like floppy disks.
- Format storage media – i.e. remove any existing contents from a disk or tape and prepare it for use in that particular computer.
- Store and manage files in containers called ‘directories’, arranged in a hierarchical structure that (more or less) made logical sense.
- Deliver information about the computer to the user – its capacity, speed, current usage and so on.
- Respond to simple commands, and allow users to string these together into a sequence called a ‘bash’ or ‘batch’ program.
Some advanced OS’s of the day could even ‘multitask’ – do two or more things at the same time. Among these was a system called UNIX, which was not popular in the commercial world but had a lot of enthusiastic users at universities in the US and elsewhere.
*If you don’t know what a typewriter was, go ask your parents.