Operating systems (OS) provide a set of functions needed and used by most application programs on a computer, and the linkages needed to control and synchronize computer hardware. On the first computers, with no operating system, every program needed the full hardware specification to run correctly and perform standard tasks, and its own drivers for peripheral devices like printers and punched paper card readers. The growing complexity of hardware and application programs eventually made operating systems a necessity.
THE 1ST GENERATION (1950’s) The operating systems of the 1950s were designed to smooth the transition between jobs. Before the systems were developed, a great deal of time was lost between the completion of one job and the initiation of the next. This was the beginning of batch processing systems in which jobs were gathered in groups or batches. Once a job was running, it had total control of the machine. As each job terminated (either normally or abnormally), control was returned to the operating system that "cleaned up after the job" and read in and initiated the next job. Examples include:
1. 1956, GM-NAA I/O: This early OS was primarily designed to automatically switch to the next job once its current job was completed. It was used on about forty IBM 704 mainframes
THE 2ND GENERATION (early 1960’s)
The second generation of operating systems was characterized by the development of shared systems with multiprogramming and beginnings of multiprocessing. In multiprogramming systems several user programs are in main storage at once and the processor is switched rapidly between the jobs. In multiprocessing systems, several processors are used on a single computer system to increase the processing power of the machine.
Device independence began to appear. In first generation systems, a user wishing to write data on tape had to refer to a particular tape drive specifically. In second generation systems, the user