It all started with computer hardware in about 1945s. Computers were using vacuum tube
technology. Programs were loaded into memory manually using switches, punched cards, or
As time went on, card readers, printers, and magnetic tape units were developed as
additional hardware elements. Assemblers, loaders and simple utility libraries were
developed as software tools. Later, off-line spooling and channel program methods were
Finally, the idea of multiprogramming came. Multiprogramming means sharing of
resources between more than one processes. Now the CPU time was not wasted. Because,
while one process moves on some I/O work, the OS picks another process to execute till the
current one passes to I/O operation.
With the development of interactive computation in 1970s, time-sharing systems emerged.
In these systems, multiple users have terminals (not computers) connected to a main
computer and execute her task in the main computer.
Another computer system is the multiprocessor system having multiple processors sharing
memory and peripheral devices. With this configuration, they have greater computing power
and higher reliability. Multiprocessor systems are classified into two as tightly-coupled and
loosely-coupled (distributed). In the former one, each processor is assigned a specific duty
but processors work in close association, possibly sharing the memory. In the latter one,
each processor has its own memory and copy of the OS.
Use of the networks required OSs appropriate for them. In network systems, each process
runs in its own machine. The OS can access to other machines. By this way, file sharing,
messaging, etc. became possible.
In networks, users are aware of the fact that s/he is
working in a network and when information is exchanged. The user explicitly handles the
transfer of information.
Distributed systems are similar to networks. However in such systems, there is no need to
exchange information explicitly, it is handled by the OS itself whenever necessary.