Introduction to Computer Systems
06/23/2001
A Presentation in 2 Parts: "Insight" is the key word here!
- What a CPU really is:
(And associated required hardware) - What an Operating System is, and what
Drivers really are.
(i.e. The Software required to make it all work)
What a CPU really is
- I often like to start out a presentation like this by illustrating that a current computer keyboard is a COMPUTER, and so are current printers, modems, monitors, scanners, and any of the so-called "intelligent devices" are also computers! We often have some misconceptions or limitations about what a computer really is or does.
- There are many computer systems in
common use, other than the so-called Personal Computer:
- Gas pumps,
- elevators,
- home-management systems,
- burglar alarm systems,
- traffic signals,
- sophisticated test equipment,
- sophisticated hi-fi,
- control systems in automobiles and trucks,
- and of course, most of the current ham equipment we currently use.
- What I would like to try to do here is
reduce all of these complications to a
common denominator!!
- Any CPU in the world, from the simplest
to the most complex only does 2 things:
- A CPU either moves data, or manipulates
data.
- ( The actual processes used for these 2 actions can be very complex. )
- A CPU either moves data, or manipulates
data.
- Any CPU in the world, from the simplest
to the most complex only does 2 things:
- Key elements to any system start with the CPU itself, memory, and interface devices (called I/O devices)
- Addressing memory
is to specify "where" data is to be retrieved or stored
into memory, and then to either write-to or read-from that memory.
- This would be equivalent to pre-positioning a tape recorder to a specific veeder count location, and then either playing the tape, or recording data at that position of the tape.
- There are many methods of addressing memory, and there are many kinds of memory, such as ROM or RAM. Even various hardware devices can be addressed as a memory device.
- This then allows you to grab data from one location and create either a copy or move the original data to somewhere else.
- Since any computer is totally worthless unless
it can interface with the outside world, devices that allow this
are called I/O devices.
- These devices are typically called intelligent and programmable I/O devices.
- The only problem is that these devices are as "dumb as a post" until they are told what to do and how to do it.
- It is very important to realize that any and all computer systems are totally useless without instructions on how to do this, called software.
- A "Driver" is simply a set of instructions (called code) that specifically controls the I/O interface devices, and is compatible with the operating system in use.
- Now, here's the interesting part:
- An operating system is simply the stitching together of the collection of those drivers, and allowing a "command interpreter" to control the sequence of events.
- In a nutshell, when a computer system is first turned on, it must be told what to do, where the initial "instructions" to do so, are normally in a system of memory. This can be followed by "loading" a larger set of instructions, and perhaps even another even larger loader, that then loads the next set of instructions. When a large enough body of instructions has been loaded, this can represent a usable package, called an operating system.
Core of a CPU
- The core of any CPU is what instructions are available, and what binary code is required to execute those instructions.
- The next layer out from that core is to compose
an organized set of instructions according to some specific plan,
to accomplish a particular task, or series of tasks. Having done
so, this becomes an operating system (OS) for that
project.
- This simply means that given any CPU:
- one team can put together an operating system for a traffic light, and
- another team can put together an operating system for an intelligent elevator system, and
- another can tie it to the type of interface devices to control those things we call disk drives, keyboards, printers, and lo … we have what we commonly call a computer.
- Now we can understand that we can have more than one type of an operating system for the same CPU and associated hardware, and where they may not even be compatible with one another, each may be actually better than the other for particular applications. For example, if someone were to take an IBM PC and construct an operating system for it for an entirely different purpose, we could contrive just about anything we want..
What an Operating System is
- "OS" actually stands for "Operating System", regardless of who makes it.
- "DOS" stands for "Disk Operating System", regardless of who makes it.
- So you see that when people do refer to "DOS", it's actually incorrect to think that this is only a product that comes from a particular set of folks over yonder.
Layers
The best way to understand any Computer System, from
the bottom level up,
is to consider everything in layers, like
those of lettuce or an onion.
- The core of any CPU is what instructions are available, and what binary code is required, to execute those instructions.
- The next layer out from that core is to compose an organized set of instructions according to some specific plan, to accomplish a particular task, or series of tasks. Having done so, this becomes an operating system (OS) for that project.
- This simply means that given any CPU:
- one team can put together an operating system for a traffic light, and
- another team can put together an operating system for an intelligent elevator system, and
- another can tie it to the type of interface devices to control those things we call disk drives, keyboards, printers, and lo … we have what we commonly call a computer.
- Now we can understand that we can have more than one type of an operating system for the same CPU and associated hardware, and where they may not even be compatible with one another, one may be actually better than another for particular applications. For example, if someone were to take an IBM PC and construct an operating system for it for an entirely different purpose, we could contrive just about anything we want..
- Additional layers would be "Applications Software", for personal or business use, such as word-processing, spreadsheets, database, imagery, CAD, internet access, etc.
- A lot of us tend to take general computer systems pretty much for granted, without really giving any consideration to how that computer actually does do what it does. In fact, most of us find the variations in computer operating systems either confusing or bewildering, to say the least. To make things even more confusing, we are led to believe that "DOS" is an ancient aspect of current computer technology, originally created by those same folks east of here, and now supplanted by "windows" systems supposedly created by those same folks. Sorry, but none of those assumptions are correct. "DOS" and the "Windows" concepts were not, and are not, the exclusivity of those folks in mention. But, let's not dwell in that arena for a while. Instead let's get into what a computer really is!
- For starters, any computer operating system that exists, for any computer that exists, has much in common with each other. This is true for everything from mainframe computers, mini-computers, microcomputers, game computers, home-management systems, burglar-alarms, industrial machinery, control-systems in automobiles and trucks, test-equipment, and of course ham-radios.
What Drivers really are
- Repeating what was mentioned earlier:
- Since any computer is totally worthless unless it can interface with the outside world, devices that allow this are called I/O devices.
- These devices are typically called intelligent and programmable I/O devices.
- The only problem is that these "intelligent" devices are as "dumb as a post" until they are told what to do and how to do it by programming them.
- It is very important to realize that any and all computer systems are totally useless without instructions on how to do this, called software.
- A "Driver" is simply a set of instructions (called code) that specifically controls the I/O interface devices, and is compatible with the operating system in use.
- Consider that you will actually need a driver for the keyboard, the mouse, each and every type of disk drive, the output to the video display, the printer, the scanner, the serial ports, the parallel ports, the modem, the network interface.
- Now, consider that for each of these programmable intelligent I/O devices, the code of the driver for them must exist in 2 parts. I.e. the 1st part is the code required for the device itself, and the 2nd part must be compatible with the current operating system.
- In simple terms, every time you change the operating system, you have to have a new driver. Every time you change the device, you have to have a new driver. An exception to this might be if the new device is compatible with the old driver. There are numerous cases where a "new & improved" device is backwards compatible with the old device, but the new driver is required to obtain the improved features of the new device.
- In the days of the various DOS systems, the
mouse driver could be loaded a couple of different ways:
- You could invoke the "mouse.sys" with config.sys, which embedded it into system during its construction.
- You could load it after system is constructed, by invoking it as "mouse.com" either from autoexec.bat, or even by manual keyboard command. In this case the mouse driver is actually an attachment or appendage to the OS, and called a "Transient Sub Routine" (TSR).
- The advantage of embedding the mouse driver by "mouse.sys" is that it was a more efficient use of memory, but could not be easily removed.
More on Operating Systems (and "Shells" over Operating Systems)
- Note that there are several quite acceptable
"DOS" packages. Not all folks realize that there are
many Application Programs that run well on most of these "DOS"
Platforms, which support their own "Windows Appearances",
without actually requiring the existence of the assumed "Windows"
Shell to do so. Another factor that has been commonly overlooked,
is that all of these "DOS" Platforms did support "Windows"
and "Windows for WorkGroups" quite well. OS/2 would
run WFW as sub-tasks. "Windows" is not reserved to
be in reference to a "Operating System", but is simply
a reference to the method of display.
PC/DOS Windows (not an OS) Novell DOS (NW/DOS) Windows for Workgroups (not an OS) DR/DOS Windows 95 (not an OS) MS/DOS Windows 98 (not an OS) OS/2 Warp (true OS ) Windows NT Linux (true OS) Windows Millenium MAC/OS Windows 2000 - But what about the earlier versions of true
operating systems, called:
- MP/M (which would run several CP/M Systems concurrently)
- CP/NET (which would allow diskless system interfaces into existing other CP/M or MP/M Systems)
- CP/M86,
- Concurrent CP/M86,
- And how about even … Concurrent XM? (which would run up to 4 MS/DOS Systems as sub-tasks)
- Since the majority of these are operating systems other than MS, some folks would like to remove them from the history books, and pretend they either do not exist, or never have existed.
Now, here are the kickers:
- Each type of CPU uses a different set of instructions (called code), or an extended set of instructions for other CPU's.
- Often, these sets of instructions are not compatible with other, even similar CPU's.
- To make things more complicated, there are even various different operating systems which even though they can run on identical hardware, are not compatible with each other.
In Summary
- We could take a functional piece of CPU hardware with I/O capability, construct an operating system of our own design (naming it "YourName/OS"), and put it to use in the arena of choice - like a burglar alarm at the clubhouse. Would it have to be compatible with anyone else's system?
- Some parting thoughts for those who are concerned
about "Compatability":
- Can your "Operating System" run Perl, XFree86, Python, Gzip, Emacs, Mcopy, GNU, Gawk, ??
Other CPU Pages
Computer Hardware Systems - How a Computer really works
What are some of the conventional Addressing Modes? ..... Generic Addressing
"0's" & "1's" for Processors (CPU's) ..... Page 1