Just like an engine control unit (brain box) controls almost all parts of modern automobiles, although it was initiated to control fuel injections sometime around 1980, but it has undergone several development and stages over the years, making it suitable to control almost all operations in today's cars.
The same goes to the operating system in our various computer systems, some decades ago, 1960 precisely, operating system was known to be a software that drives the hardware, however the advancement in computing field over the years has expanded the scope of operating system, nowadays hardware executes a great varieties of software application systems and modern software application systems were designed in such a way to execute concurrently without any interference.
Allowing concurrent operation of processes or programs will not only ensure efficient utilization of hardware resources but it will also maximize the time to run two or more programs or processes to completion, software application systems are being managed in such a way that it ensues no interference between the hardware and software.
This is possible through a layer of software application called an operating system, it separates the hardware interface from software applications and render service which allow every application to run effectively and safely, thereby modern operating system could be defined as a software that enables software applications to effectively interact with hardware part of the computer system.
Operating system as a resources manager
The primary function of operating system is to manage both hardware and software resources. Hardware resources such as memory, processors, communication devices and input and output devices, while software resources includes applications and software abstractions such as virtual machines, though not physical in nature unlike hardware resources which can be seen and touched.
Operating system as a resource manager in 1950s
The first set of electronic digital computers around the year 1940 were not known to possessed any operating system, programmers were known for entering their machine language code in one bit at a time on rows of mechanical switching, machine language codes were written on punched card. In order to speed up the programming activities, English abbreviation to represent the operation of computer activities were developed and that led to the so called assembly language.
The first set of electronic digital computers which implemented the first operating system was in the early 1950, it executed only a job at a time with the method that allows free transition between jobs so as to ensure efficient utilization of resources. In fact, the early computer systems that implemented operating systems were called single stream batch processing systems since programs and data were submitted in groups or batches by loading them consecutively into mechanical tapes or disk for processing.
A job stream processor read the job control language, create alert for the next job and performed appropriate housekeeping chores to ease transition to the next job. Programmers of those days were required to directly relate and control system resources such as memory, input and output devices, e.t.c., thus, making it difficult and tedious work. Also the computer systems of early operating systems required the entire programs to be loaded into the memory before the execution of program will take place and no doubt it limited programmers to writing small programs with limited capabilities.
The processor used to be in idle state when a running process is making use of any of the peripheral devices even when other jobs are already on the queue waiting for transition, thus resulting in wastage of resources and time.
Operating system as a resource manager in 1960's
Batch stream processing was also in used during the 1960's, but unlike its predecessors, computer system resources were more efficiently utilized, several jobs used to be processed at a time, card readers, card punches, printers, tape drives and disk drives are among the peripheral devices in used then. The improvement over the 1950's is that it allows one job to use the processor while other jobs may use the other peripheral devices if needs arise, making it a mixture of diverse jobs: processor bound jobs and I/O bound jobs, that seems to be the best way for resources utilization then, and that led a good pathway towards multi-programming systems which has the ability to manage several jobs at once.
Operating system as a resource manager in 1970's
Multi-mode programming systems dominated 1970's, a system that supported batch processing, time-sharing, and real time application were in used, the system gives room to manage multiple users sharing both CPU time and terminals.
Operating system as a resource manager in 2000 and beyond
The full implementation of multi programming operating system dominated the industry, thus allowing an operating system to run more than one programs on a single processor at the same time. This serves as an advancement to its predecessors, because there is no need for a processor to be in an idle state simply because a running program is making use of a peripheral device while there are other programs on the ready list queue waiting for processor to be available. For instance, if a running program is making use of an input/output device in a multiprogramming operating system, the other programs on the queue list must be ready to use the CPU. Thus, allowing several jobs to share CPU time. Although, their jobs execution is not defined to be at the same time period.
Today's modern operating system enables an operating system to utilize its resources more efficiently, especially when there is a choice of processes to execute, this is achieved through a strategy called process scheduling policy, which allows an operating system to decide on which process to execute at a specific time. I may elaborate more on it later.
Thanks for being with me always, your interaction over the years has been a great source of inspiration for me to write to this end.