System Software
Input/Output

Last week you learned about how computer hardware is programmed at a low level, including some of the basics of assembly language.
We also learned about different ways of counting (number systems), such as binary, octal, and hexadecimal.

This week we will learn about some of the fundamental software that makes a computer useful to us.
Software is often divided into two categories: application software and system software.

Application Software is software that is designed to do some specific task. The software that is presenting this course is an example of application software. The task is to help you learn about computers. A word processor is another example. It lets you create and edit documents. How about a game, such as Solitaire? That's right, it is application software. Now maybe you are thinking, isn't everything an application?

No. System Software is software that is used to create and run application software. It is concerned with managing and using the computer system's resources, which includes the system's memory and input/output devices. System software allows you to create and run applications without having to think about the details of how the computer works.
You can think of this in terms of layers, as shown in this figure.



At the bottom layer is the hardware. The system software runs on the hardware. Of course, the application software runs on the hardware also, but it depends on system software to provide it with certain basic capabilities, which we will learn about this week.

Let's say you want to play solitaire. How does the solitaire program get started?
It's easy, you say. Just click on the icon and it starts.
Ah, but the computer's hardware doesn't know anything about solitaire and its icon.
It is the job of the system software to make it possible for the hardware to run the solitaire program.
A great deal of system software executes between the time you click the icon and the solitaire game window opens.
During the next few lessons we will learn about some types of system software.

First, think about the programs we discussed last week, for example the program that adds two numbers:



We know that this asssemby language program is converted into 1s and 0s that the computer hardware can run. But how do the 1s and 0s get into the computer's memory in the first place?

In the earliest days of computing, the values were loaded into memory by setting switches.
Recall that each bit in a word of memory is a switch. Our program is 3 words in length and each word is 8 bits long, so that is 3 X 8 = 24 switches to set.
To load this program on one of the early computers, the programmer would have to manually set switches to load either a 1 or a 0 into each bit of each word of the program. A program like solitaire takes well over a 100,000 bits, so think how long it would take to set that many switches!

The early computer pioneers soon went to work to develop hardware that would let them store programs so that didn't have to do all that work by hand every time. One of the first solutions was the punch card, which as we've learned was originally invented by Joseph Marie Jacquard.
If we took our 3 word program for adding 2 numbers, and were to punch its pattern of 1s and 0s onto punched cards, at say 1 word per card, the our program would be "stored" on three cards. A piece of hardware, called a "card reader", could read the pattern of each card and set the bits in memory to the same pattern, thus loading the program into the computer's memory. While it might take a programmer an hour or more to manually set the switches for a 100 word program, the card reader could load the same program from punch cards in a few minutes.

Later, engineers developed other devices for storing programs. One such device was the magnetic tape drive. This device uses a thin tape that is coated with a special magnetic material. The tape is wound onto a reel, as shown in this picture.



By using a second reel, the tape drive can move the tape back and forth along an electronic "head". That head uses magnetism to read data from and write data to the tape.



The tape drive uses magnetism to write a pattern of 1s and 0s onto the tape. It can then read that pattern back at a later time. The concept is similar to a VCR. Because a single magnetic tape can hold thousands of times as many 1s and 0s as a stack of punch cards, magnetic tape drives soon became widely used.

Another storage device that uses magnetism is the disk drive, which we will talk about tomorrow. Whatever the storage device, it is system software that works with the device to store and load programs for the computer to run.

Tape and disk drives are examples of Input/Output devices, which are devices that allow us to move information into and out of a computer. They are also often called I/O devices and let's face it, without them the fastest computer in the world would be pretty useless.

Can you think of other examples of I/O devices? The monitor, of course, is an output device. The keyboard is an input device, as is the mouse.

So we can store our application programs on some type of medium (punch card, magnetic tape, etc) and we can use a hardware device (card reader, tape drive, etc) to access it.
Tomorrow we will learn more about how that all works.







Copyright © 2005 by StrongTower Software Inc. All Rights Reserved.

Visit us at strongtowersoftware.com