Vous êtes sur la page 1sur 5

J.E.D.I.

1 History of Operating Systems


1.1

Objectives

This chapter gives a short history of operating systems from the first computers in the 1940's
to today's personal computers. Operating systems have evolved to address a need. We will
focus on the forces that have molded operating systems to their present form today.
At the end of the chapter, the student should be familiar with the history of OS's and know
what factors have driven the evolution of OS's.

1.2

Chapter Outline

This chapter is divided into the following sections

Overview

Pre-batch systems

Simple Batch Systems

Multi-programmed Batch Systems

Time-sharing Systems

Personal Computer Systems

Parallel Systems

Distributed Systems

Real-time Systems

1.3

Pre-batch systems

If you were studying during the early days of computers then the following would be the
scenario that you would face to work on your class's machine exercises.
First you would go to your school's computer center to reserve time on the only computer in
school. On your scheduled time (which could be in the early hours of the morning) you would
go to a filing cabinet to get a stack of punch cards for your compiler program. You would have
to then wait around 5 minutes for the computer to load your compiler's punch cards.
As there is no time or space for programming, you would have made your program at home
and have your punch cards generated by a separate computer. After your punch cards are
done, you would load your program into the main computer and pressed a switch for the
computer to begin execution. If the program needed more input, then you would have to enter
more punch cards as there are no keyboards yet at this stage)
At the end of the program execution, there are two possible situations. First, if your program
runs successfully, output is sent to the printer (no computer screen to see data). If your
program produced an error, then the complete contents of memory and registers are sent to
the printer. This is what is called a core dump.

Operating Systems

J.E.D.I.

If your time is not yet up, then you can still recompile. Usually though an error in execution
meant waiting another day before you could try again.
If the next student used a different compiler than yours, then he would have to go to the filing
cabinet, grab the punch cards, load them on the computer, etc...
As can be seen, one of the ways to make this process faster is to batch all programs that use
the same compiler. This leads to the first rudimentary operating systems called batch systems

1.4

Simple Batch Systems

In a simple batch system, a computer operator bundles together all the jobs that use the
compiler. Instead of you manually loading the punch cards, you would submit your punch cards
to the computer operator, who would then bundle together all jobs that use the same compiler.
Usually, these punch cards are transferred unto continuous magnetic tape, with one job after
another.
After all the jobs are in, the operator loads the compiler and then runs the tape as input. As
the computer finishes a job, it automatically goes to the next job without having to reload the
computer. At the same time, all output is sent to a different magnetic tape. Once all the jobs
are finished, only then is output printed.
As a student during this time, you would come to the computer center in the evening and then
come back for your program's output in the morning. Although you would not have direct
access to the computer anymore, at least you would not have to wake up at odd hours just to
use the computer.
Recall our kernel definition of the operating system: the OS is the program that is in memory
all the time. The simple batch system follows this definition, it has a rudimentary operating
system that handles automatic job turnover that is always in memory. Memory only contains
the running program while other non-running programs are kept on tape or disk.

1.5

Spooling

A program asking for additional input in a simple batch system would cause the entire CPU to
halt while waiting for the user to enter new data. I/O is almost a 1000 times slower than CPU;
if a CPU instruction took 1 second to execute, then it would be idle for 15 minutes waiting for
input.
A way to solve this problem is through Simultaneous Peripheral Operation On-Line or Spooling.
Spooling means batching input as well as programs. Before the job starts, all input punch
cards are read continuously and placed on a hard disk or tape. If the program requires input,
then it would read it from the disk. This is a lot faster than waiting for the user to come and
load the punch cards.
Spooling also refers to output. All program output, instead of being sent immediately to the
printer is first saved to disk. Only when all output has been saved will printing be done. This is
a lot faster than pausing the CPU only to send data to the printer.

1.6

Multiprogrammed batch systems

A better way to go around the I/O delay is to give another process control over the CPU while
the main process is waiting for I/O. This idea gave rise to multiprogrammed batch systems.
Multiprogrammed batch systems allow for more than one program executing at the same time.
All these programs are kept in memory. CPU control is given to a program when the current
process in control has to wait for I/O or is preemptively removed from control based on a
scheduling scheme by the CPU.
Operating Systems

J.E.D.I.

The end result of this is that the CPU is kept busy, less time is spent being idle waiting for I/O.
However, having multiple programs in memory comes at a price: the OS should now provide
for memory protection as a job should be unable to access memory belonging to another job,
or for that matter the OS itself.
The OS should also provide for a scheduling system. If a process halts for I/O, which process
should be made to run on the CPU next? Should a process that has been on the CPU for a long
time now be removed in order to give chance for the other process to run? Multiprogrammed
batch systems should be able to answer these questions

1.7

Interactive Systems

With the advent of multi-programmed batch systems, it has now become cost-effective to have
a user interact with the computer via a keyboard. Before this time, all possible input to the
system had to be done via punch cards, with all possible input already encoded beforehand.
With interactive systems, a main "command-line interpreter" process would accept user
commands.
Although keyboards have existed before this time, it was very inefficient for the computer to
stop processing as the user (very slowly) entered commands. With task switching, the CPU
could be made to run other tasks while the user typed his commands and view output on a
computer screen.

1.8

Time-sharing systems

The idea of interactive systems could be extended to allow multiple users to access the
system. Connection could be done using dumb terminals, a keyboard and monitor connected to
a modem which connected to the central computer via regular phone lines. This allowed users
to work from home, sending and receiving I/O while all processing is done on central computer.
Even today, this system can still be found in client-server architectures.
Time sharing systems also gave rise to the idea of files. As multiple users would probably have
different data for processing, a way to have personal data space for users came about, all
stored in a central hard disk. This hard disk was also used to store jobs that are currently idle
to give space in memory for active jobs that required more memory. This is the central idea of
virtual memory.
The OS also had to allow for multiple processes from different users to be able to communicate
and synchronize with processes from other users. Also, the OS must now be able to see if
processes are waiting for each other to release a process. This is called deadlock avoidance or
prevention.

1.9

Personal Computer Systems

Today, computers have become cheap enough for individual users to own. Although only a
single user is accessing the system, the lessons learned from the previous generation of
operating system is now used to emphasize a greater user friendliness to the system, rather
than efficiency.
Also, personal computer systems could now allow more than one operating system to run on a
single computer. Before this time, a computer came with an operating system. Now, a user can
select what operating system is most apt for the user's needs.

1.10

Parallel Systems

Parallel Systems are computers that have more than one processor. They are also called
Operating Systems

J.E.D.I.

tightly-coupled systems. The idea here is to speed up processing be literally having two (or
more) processes running at the same time instead of just seemingly multiple processes all run
via task switching.
An advantage of parallel processing is that applications can be made to run faster as there is
now more than one processor handling computation. Also, parallel systems are cheaper: there
is no need to buy an entirely new computer for extra processing power. Also, the failure of one
CPU does not mean that the system would fail.
There are two kinds of parallel systems:

Symmetric Multiprocessing Systems are systems where each processor acts


independently of one another. An example of this is the Intel Core 2 Duo CPU

Asymmetric Multiprocessing Systems are systems where a Master CPU controls one mor
more slave CPUs. In the Sony PlayStation 3, a central CPU delegates computation to 8
other CPUs, each specialized for a particular task, such as graphics rendering, character
movement, system administration, etc.

1.11

Distributed Systems

Instead of just multiple CPUs, why not buy multiple computers instead? Distributed systems
are whole computers that have their own individual CPU and memory. Parallel Systems are
called tightly-coupled systems because communication between CPUs is done through shared
memory. Distributed Systems are called loosely-coupled systems, as CPUs communicate over a
local area network instead of shared memory. Each element of a distributed system is a
computer in itself.
Advantages of distribution are:

Resource sharing you could specialize parts of your system to handle certain tasks.
You could for instance, give the largest hard disk to your file storage computer, the
largest RAM to your development server, the printer to your printer server etc. All other
users who want to use these resources would only need to communicate to the
computer possessing those resources.

Computation speedup computation is made faster by distributing the load among


different computers, as is common practice in large server facilities like Google (with
over 10000 computers)

Reliability as with parallel systems, the failure of one computer does not mean failure
of the entire system.

1.12

Real time systems

Real time systems are specialized systems that are required to respond to a given input within
a specified time-frame or the system will fail. In light of this, the OS for these systems are
geared towards producing the output as fast as possible, sacrificing ideas such as time-sharing
or interactivity. These systems can be found in industrial control systems, or in aircraft safety
systems.
There are two kinds of real-time systems

Hard real time systems are systems that will fail if required output is not released in
time. Systems like these almost have no secondary memory, data is either in fast short
term memory or ROM. Only ONE process must run in these kinds of systems in order to
meet the required deadline.

Soft real time systems are systems whose performance only degrade if the output is

Operating Systems

J.E.D.I.

delayed. Examples of these are video rendering systems such as a DVD player where a
little frame lag is tolerable.

Operating Systems