When you really get down to the nitty
gritty, a computer is simply a hunk of machine with a bunch
of on/off switches. The patterns created by these on/off
switches, represented by ones and zeros, are assigned
meaning by the people who build the machines (by the
"machine" I mean hardware, such as a CPU, a monitor, or a
operating system is a living, breathing software entity.
The soul of the computing machine, it is the nervous system
that turns electrons and silicon into a personality. It
brings life to the computer." - from Mike Gancarz's "The UNIX
For example, an engineer designing a
sound card for a computer might specify that if all the
switches are turned on, the card will generate a
loud and annoying beep.
Turning a switch to on or off
typically involves sending the switch an electrical signal of a
As you can imagine, telling the
hardware to do things is a bit of a cryptic process.
Generating beeps might seem simple enough, but when you
imagine the complexity of defining and manipulating memory,
creating file systems, executing applications, and plenty of
other tasks demanded of computers today, you can see how
manipulating on/off switches could get overwhelming pretty
In fact, if you had to speak to the
hardware itself, you would probably spend all your time
coding machine instructions instead of actually doing your
Fortunately, instead of forcing users
to talk to the hardware directly, most computers have some form of
"operating system" (also known as OS) which provides a "layer of abstraction"
around the hardware.
The OS sits between users and hardware
providing translation services. The great benefit of the
OS is that you need not know how to speak
the language of the hardware or how to perform basic tasks
such as the definition of memory or the allocation of
disk space using the hardware. The OS knows
how to do all of that itself. And what's more, it can speak to
the hardware much faster than you could.
All you need to know how to do is talk
to the OS. And fortunately, talking to the OS
is much easier than talking to the hardware since the
OS is typically designed to speak a language
more similar to human languages.
In UNIX, the operating system is broken
into three pieces: the kernel, the shell, and the built-in utilities.
The kernel is responsible for low level hardware communication,
the shell provides human users with a user-friendly interface,
and the built-in utilities provide basic tools for doing work.
Let's take a look at the kernel first
Table of Contents