This text is an introduction to the design and implementation of system soft
wareSystemsoftware consists of a variety of programs that support the opera
tion of a computer/This software makes it possible for the user to focus on an
application or other problem to be solved, without needing to know the
details of how the machine works internally.
When vou took your first programming course, you were already using
many different types of system software. You probably wrote programs in a
high-level language like C++ or Pascal, using a text editor to create and moditv
the program. You translated these programs into machine language using a
compiler, The resulting machine language program was loaded into memory
and prepared forexecution by alloader or linker. You may have used adebugger
tohelp detect errors in the
program.
In later courses, you probably wrote programs in assembler
may have used macro instructions in these language. You
programs to read and write data,
or to perform other higher-level functions. You used an
ably iluded anacro processor, to translate these aSsembler, which pruob
progYams into
guagehe translated programs were prepared for execution by machine lan
the lder or
linker, and may have been tested using the
debugger.
, 1.2 SYSTEM SOFTWARE AND MACHINE ARCHITECTURE
One characteristicin which mosystem software differs from appication soft
ware is machine dependencyAn application program is primarily concerned
with the solution of some problem, using the computer as a tookThe focus is
on the appliration, not on the computing svstem Svstem programs, on the
other hand, are intended to support the operation and use of the computer
itself, rather than any particular application. For this reason, they are usually
related to the architecture of the machine on which thev are to run. For exanm
ple, assemblers translate mnemonic instructions into machine code; the
instructon formats, addressing modes,etc., are of direct concern in assembler
design. Similarly, compilers must generate machine language code, taking into
account such hardware characteristics as the number and type of registers and
the machine instructions available. Operating systems are directly concerned
with the management of nearly all of the resources of acomputing system.
Many other examples of such machine dependencies may be found through
out this book.
On the other hand, there are some aspects of svstem software that do not
directly depend upon the type of computing system being supported. For
example, the general design and logic of an assembler is basically the same on
most computers. Some of the code optimization techniques u_ed by compilers
are independent of the target machine (although there are also machine
dependent optimizations). Likewise, the process of linking together indepen
dently assembled subprograms does not usually depend on the computer
being used. We will also see many examples of such machine-independent
features in the chapters that follow.
Because most system software is machine-dependent, we must include real
machines and real pieces of software in our study. However, most real com
puters have certain characteristics that are unusual or even unique. It can be
difficult to distinguish between those features of the software that are truly
fundamental and those that depend solely on the idiosyncrasies of a particular
machine. To avoid this problem, we present the fundamental functions of each
piece of software through discussion of a Simplified
Instructional Computer
(SIC). sIC is a hypothetical computer that has been carefully
include the hardware features most often found on real designed to
avoiding unusual or irrelevant complexities. In this way, themachines, while
central concepts
of a piece of system software can be clearly
tion details associated with a particular separated from the implementa
machine. This approach provides the