The Central Processing Unit

The Central Processing Unit

Sometimes people just don’t understand. At first, I thought that they “didn’t have a clue,” but that was really the problem. They had a clue, but a single clue doesn’t solve a crime, nor does it help you run a Linux system. You can easily copy a program from a DOS disk onto an Linux system, particularly if Linux is running on your DOS partition. In all likelihood, the permissions are already set to be executable. So you type in the name of the program and press Enter. Nothing happens, or you get an error about incorrect format. Hmmm. The software manual says that it runs on a 386 or higher (which you have), a VGA monitor (which you have), and at least 2Mb of hard disk space (which you have). Why doesn’t it work?

This is a true story. A customer called in saying that the system I was supporting at the time (not Linux) was broken. This customer had a program that worked fine on his DOS PC at home. It, too, was a 386, so there shouldn’t be a problem, right? Unfortunately, wrong. Granted, in both cases, the CPU is reading machine instructions and executing them, but in fact, they are the same machine instructions. They have to be. The same also applies to a Linux system.

The problem is comparable to German and English. Although both use (basically) the same alphabet, words (sets of characters) written in German are not understandable by someone reading them as English, and vice versa. Sets of machine instructions that are designed to be interpreted under DOS will not be understood under Linux. (Actually, the problem is a little more complicated, but you get the basic idea.)

Just as your brain has to be told (taught) the difference between German and English, a computer needs to be told the difference between DOS and UNIX programs.

In this section, I will talk about the CPU, the brains of the outfit. It is perfectly reasonable for users and administrators alike to have no understanding of what the CPU does internally. However, a basic knowledge of some of the key issues is important so you can completely understand some of the issues I’ll get into elsewhere.

Its like trying to tune-up your car. You don’t really need to know how oxygen mixes with gasoline to be able to adjust the carburetor. However, knowing that it happens makes adjusting the carburetor that much easier.

I won’t go into detail about the CPUs instruction cycle, that is, how it receives and executes instructions. Though I’m interested in things like that and would love to talk about them, it isn’t really necessary to understand what we need to talk about here. Instead, I am going to talk mostly about how the CPU enables the operating system to create a scheme whereby many programs can be in memory simultaneously. These are the concepts of paging and multitasking.

Orignally, the only commercial distributions of Linux available were for Intel processors. RedHat released a version for the Digital Equipment Corporation (DEC) Alpha processor, and others have since followed.

In the next section, I will go into a little depth about the Intel process and how Linux interacts with it. Afterwards, I will talk briefly about the DEC Alpha to give you an idea of what it is about. Because of the number of Intel distributions and Intel-based machines, I won’t go into the same depth for the Alpha. The concepts a basically the same, though the names of registers, etc., are different.