|"An 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 Philosophy"|
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 certain voltage.
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 quickly.
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 work.
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