Page 21 - DCAP507_SYSTEM_SOFTWARE
P. 21
Unit 2: Evolution of Operating System
Introduction Notes
If we just build a computer, using physical components, we end up with a lot of assembled
metal, plastic and silicon. In this state the computer can do nothing useful. To turn it into one of
the most versatile tools known to man we need software. We need applications that allow us to
write letters develop (other) programs and calculate cash flow forecasts. But, if all we have are
the applications, then each programmer has to deal with the complexities of the hardware. If a
program requires data from a disc, the programmer would need to know how every type of disc
worked and then be able to program at a low level in order to extract the data. In addition, the
programmer would have to deal with all the error conditions that could arise. As an instance, it
is a lot easier for a programmer to say READ NEXT RECORD than have to worry about moving
the read/write heads, waiting for the correct sector to come around and then reading the data
(and this is very simplified view of what actually happens). It was clear, from an early stage in
the development of computers, that there needed to be a layer of software that sat between the
hardware and the software. This had led to this view of a computer. The bottom layer of the
hardware consists of the integrated circuits, the cathode ray tubes, the wire and everything else
that electrical engineers use to build physical devices. The next layer of hardware
(microprogramming) is actually software (sometimes called firmware) that provides basic
operations that allow communication with the physical devices. This software is normally in
Read Only Memory (and that is why it is called firmware).
The machine language layer defines the instruction set that are available to the computer.
Again, this layer is really software but it is considered as hardware as the machine language will
be part and parcel of the hardware package supplied by the hardware supplier. The operating
system is a layer between this hardware and the software that we use. It allows us (as
programmers) to use the hardware in a user friendly way. Furthermore, it allows a layer of
abstraction from the hardware.
Example: We can issue a print command without having to worry about what printer is
physically connected to the computer.
In fact, we can even have different operating systems running on the same hardware (e.g., DOS,
Windows and UNIX) so that we can use the hardware using an operating system that suits us. On
top of the operating system, we have the system software. This is the software that allows us to
do useful things with the computer, but does not directly allow us to use the computer for
anything that is useful in the real world (this is a broad statement which we could argue about
but system software really only allows us to use the computer more effectively). It is important
to realize that system software is not part of the operating system. However, much system
software is supplied by the computer manufacturer that supplied the operating system. But,
system software can be written by programmers and many large companies have teams of
programmers (often called system programmers) who's main aim is to make the operating
system easier to use for other people (typically programmers) in the organization.
The main difference between the operating system and system software is that the operating
system runs in kernel or supervisor mode where as the system software and applications run in
user mode. This means that the hardware stops the user programs directly accessing the hardware.
Example: Due to the above restriction, you cannot, say, write your own disc interrupt
handler and replace the one in the operating system. However, you can write your own (say)
command shell and replace the one supplied with the computer.
Finally, at the top level we have the application programs that, at last, allow us to do something
useful.
LOVELY PROFESSIONAL UNIVERSITY 15