Early computers were physically enormous machines run from a console. The
common input devices were card readers and tape drives. The common output
devices were line printers, tape drives, and card punches. The user did not
intkract directly with the computer systems. Rather, the user prepared a job
-which consisted of the program, the data, and some control information
about the nature of the job (control cards)-and submitted it to the computer
operator. The job was usually in the form of punch cards. At some later time
(after minutes, hours, or days), the output appeared. The output consisted of
the result of the program, as well as a dump of the final memory and register
contents for debugging.
Mainframe computer systems were the first computers used to tackle many
commercial and scientific applications. In this section, we trace the growth of
mainframe systems from simple batch systems, where the computer runs one
-and only one-application, to time-shared systems, which allow for user
interaction with the computer system.
It is easier to define an operating system by what it does than by what it is,
but even this can be tricky. The primary goal of some operating system is
convenience for the user. Operating systems exist because they are supposed
to make it easier to compute with them than without them. This view is
particularly clear when you look at operating systems for small PCs.
The primary goal of other operating systems is efficient operation of the
computer system. This is the case for large, shared, multiuser systems. These
systems are expensive, so it is desirable to make them as efficient as possible.
These two goals-convenience and efficiency-are sometimes contradictory.
In the past, efficiency was often more important than convenience (Section
1.2.1). Thus, much of operating-system theory concentrates on optimal use
of computing resources. Operating systems have also evolved over time. For
example, UNIX started with a keyboard and printer as its interface, limiting how
convenient it could be for the user. Over time, hardware changed, and UNIX
was ported to new hardware with more user-friendly interfaces.
From the computer’s point of view, the operating system is the program that
is most intimate with the hardware. We can view an operating system as a
resource allocator. A computer system has many resources-hardware and
software-that may be required to solve a problem: CPU time, memory space,
file-storage space, I/O devices, and so on. The operating system acts as the
manager of these resources. Facing numerous and possibly conflicting requests
for resources, the operating system must decide how to allocate them to specific
programs and users so that it can operate the computer system efficiently and
A slightly different view of an operating system emphasizes the need to
control the various 1 / 0 devices and user programs. An operating system is a
control program. A control program manages the execution of user programs
to prevent errors and improper use of the computer. It is especially concerned
with the operation and control of I/O devices.
An operating system is a program that manages the computer hardware. It
also provides a basis for application programs and acts as an intermediary
between a user of a computer and the computer hardware. An amazing aspect
of operating systems is how varied they are in accomplishing these tasks.
Mainframe operating systems are designed primarily to optimize utilization
of hardware. Personal computer (PC) operating systems support complex
games, business applications, and everything in between. Handheld computer
operating systems are designed to provide an environment in which a user can
easily interface with the computer to execute programs. Thus, some operating
systems are designed to be convenient, others to be eficient, and others some
combination of the two.
To understand what operating systems are, we must first understand how
they have developed. In this chapter, we trace the development of operating
systems from the first hands-on systems through multiprogramrned and timeshared
systems to PCs, and handheld computers. We also discuss operating
system variations, such as parallel, real-time, and embedded systems. As we
move through the various stages, we see how the components of operating
systems evolved as natural solutions to problems in early computer systems.
There are basically two types of networks: local-area networks (LAN) and
wide-area networks (WAN). The main difference between the two is the way in
which they are geographically distributed. Local-area networks are composed
of processors that are distributed over small geographical areas (such as a single
building or a number of adjacent buildings). Wide-area networks, on the other
hand, are composed of a number of autonomous processors that are distributed
over a large geographical area (such as the United States). These differences
imply major variations in the speed and reliability of the communications
network, and they are reflected in the distributed operating-system design.