Advantages of Batch Systems
Advantages of Batch Systems
As mentioned above, one of the major shortcomings of early batch systems was that there
was no protection scheme to prevent one job from adversely affecting other jobs.
The solution to this was a simple protection scheme, where certain memory (e.g. where
the monitor resides) were made off-limits to user programs. This prevented user
programs from corrupting the monitor.
To keep user programs from reading too many (or not enough) cards, the hardware was
changed to allow the computer to operate in one of two modes: one for the monitor and
one for the user programs. IO could only be performed in monitor mode, so that IO
requests from the user programs were passed to the monitor. In this way, the monitor
could keep a job from reading past it's on $EOJ card.
To prevent an infinite loop, a timer was added to the system and the $JOB card was
modified so that a maximum execution time for the job was passed to the monitor. The
computer would interrupt the job and return control to the monitor when this time was
exceeded.
Since it is faster to read from a magnetic tape than from a deck of cards, it became
common for computer centers to have one or more less powerful computers in addition to
there main computer. The smaller computers were used to read a decks of cards onto a
tape, so that the tape would contain many batch jobs. This tape was then loaded on the
main computer and the jobs on the tape were executed. The output from the jobs would
be written to another tape which would then be removed and loaded on a less powerful
computer to produce any hardcopy or other desired output.
It was a logical extension of the timer idea described above to have a timer that would
only let jobs execute for a short time before interrupting them so that the monitor could
start an IO operation. Since the IO operation could proceed while the CPU was crunching
on a user program, little degradation in performance was noticed.
Since the computer can now perform IO in parallel with computation, it became possible
to have the computer read a deck of cards to a tape, drum or disk and to write out to a
tape printer while it was computing. This process is called SPOOLing: Simultaneous
Peripheral Operation OnLine.
Spooling batch systems were the first and are the simplest of the multiprogramming
systems.
One advantage of spooling batch systems was that the output from jobs was available as
soon as the job completed, rather than only after all jobs in the current cycle were
finished.
--------------------------------------
| Monitor |
| (more like a operating system) |
--------------------------------------
| User program 1 |
--------------------------------------
| User program 2 |
--------------------------------------
| User program 3 |
--------------------------------------
| User program 4 |
--------------------------------------
At this point the monitor is growing to the point where it begins to resemble a modern
operating system. It is responsible for:
As a simple, yet common example, consider a machine that can run two jobs at once.
Further, suppose that one job is IO intensive and that the other is CPU intensive. One way
for the monitor to allocate CPU time between these jobs would be to divide time equally
between them. However, the CPU would be idle much of the time the IO bound process
was executing.
A good solution in this case is to allow the CPU bound process (the background job) to
execute until the IO bound process (the foreground job) needs some CPU time, at which
point the monitor permits it to run. Presumably it will soon need to do some IO and the
monitor can return the CPU to the background job.
Users, and programmers in particular, longed to be able to "get to the machine" without
having to go through the batch process. In the 1970s and especially in the 1980s this
became possible two different ways.
Interactive processes are given a higher priority so that when IO is requested (e.g. a key
is pressed), the associated process is quickly given control of the CPU so that it can
process it. This is usually done through the use of an interrupt that causes the computer
to realize that an IO event has occurred.
It should be mentioned that there are several different types of time sharing systems. One
type is represented by computers like our VAX/VMS computers and UNIX workstations.
In these computers entire processes are in memory (albeit virtual memory) and the
computer switches between executing code in each of them. In other types of systems,
such as airline reservation systems, a single application may actually do much of the
timesharing between terminals. This way there does not need to be a different running
program associated with each terminal.
Personal Computers
The second way that programmers and users got back at the machine was the advent of
personal computers around 1980. Finally computers became small enough and
inexpensive enough that an individual could own one, and hence have complete access to
it.
Dedicated computers are special purpose computers that are used to perform only one or
more tasks. Often these are real-time computers and include applications such as the
guided missile mentioned above and the computer in modern cars that controls the fuel
injection system.
A multiprocessor computer is one with more than one CPU. The category of
multiprocessor computers can be divided into the following sub-categories:
shared memory multiprocessors have multiple CPUs, all with access to the
same memory. Communication between the the processors is easy to implement,
but care must be taken so that memory accesses are synchronized.
distributed memory multiprocessors also have multiple CPUs, but each CPU
has it's own associated memory. Here, memory access synchronization is not a
problem, but communication between the processors is often slow and
complicated.