The chief function of an operating system, we said, is to manage the resources of a complex computer system. It has been said that necessity is the mother of invention. The development of operating systems to their present day form is a good illustration of that. At each stage in this development, bottlenecks were found which prevented using the computer resources to their fullest capacity. The need to eliminate those bottlenecks gave impetus to inventiveness leading to the next step in the history of operating systems.
Stages of Development
The earliest computers did not have software. Their functionality was hardwired. To reprogram the machine required rewiring. These machines, of course, did not have an operating system.
User SetUp and Breakdown
With the advent of the stored program machine the day of the von Neumann architecture machines began. But the early machines were costly behemoths, available only to clients with deep pockets.
When it was not uncommon to pay $1 million for a computer, those who used these machines for business or research were willing to go to great lengths just to get their "moment in the sun," so to speak. Computers were scheduled around the clock and users had to come in at their scheduled time. In addition to loading their programs, the users had to load (and link, if necessary) any system software, such as compilers and device drivers, needed for their run. And additional work was required to make the machine available for the next user.
Operator Controlled Machines
Very soon it became clear that during the rather lengthy setup and breakdown time the very expensive computer was not doing useful work. This waste of resources had to be remedied. A computer operator was put in charge of the machine. Users submitted their programs on punch cards.