Getting Started

Ok, I'm starting this at the point where you have a running Linux system. I'm not going to assume that you know much of anything about the command line, though.

First things first. Let's start with an overview of what's in your system. First, you're going to have hardware. At a minimum this will consist of a cpu, RAM, motherboard, video card (which may be built into the motherboard), monitor, and hard drive. One important concept, too, is I/O. Quickly,

Binary

Binary is a term which refers to using 2 for the numbering system base rather than the "standard" of 10. In a base of 10, every place represents ten to some power. For example, 127 = 1*102 + 2*101 + 7*100. (For those not familiar with math, 102 = 10 * 10 = 100. any number raised to the 0 power is defined to be 1).

Binary is simply a system where each place stands for a power of two rather than a power of ten. For example, 1101 = 1*23 + 1*22 + 0*21 + 1*20 (in decimal, this would be 13).

If you take of each particular place in a binary number individually, they can be thought of as an on/off value, or an above-threshold-voltage/below-threshold-voltage value, or whatever you like that indicates a dichotomy. Now, this is the way in which a computer deals with the world, as a series of on/off values. We tend to think of them as binary numbers because humans like to group small pieces of information together into a more cohesive whole, and this works, but it isn't how the computer deals with things. More on this in the CPU section.

CPU (Central Processing Unit)

The CPU is (loosely speaking) where all programs get executed. It is often likened to the brain in a human being, though it isn't conscious. It operates with binary values, though it doesn't treat them as numbers. Instead, it uses them as sequences of on/off values.

A CPU generally has a few different components. The first is the execution unit. This takes opcodes, or operation codes, and executes them. An opcode consists of a number which represents a particular action to take and arguments for what the processor should perform these actions on.

A CPU also has registers, which are usually a few bytes of memory each that are stored in the CPU. So for example when two numbers are to be added, it's usually done with an add instruction that specifies that, say, register 3 and register 5 should be added together, and the results stored in register 13.

What a CPU is capable of doing is usually very limited. A typical CPU has instructions to do arithmetic operations (addition, subtraction, multiplication, division), logical operations (and, or, xor, negation), flow control (jump, jump if a particular register is greater than 0, that sort of thing), and memory control (loading and storing values to registers).

RAM (Random Access Memory)

RAM is extremely fast storage space that your processor is designed to directly access.

Motherboard

The motherboard is is a circuit board which connects almost all of the components of your computer. Nowadays, many components are integrated onto the motherboard. This doesn't change their nature at all, just their wiring.

I/O (Input/Output)

On many CPUs, input and output is achieved along an I/O bus which is physically locate on the motherboard. Many CPUs will do memory mapped I/O, which means that input/output registers on peripherals are mapped to memory locations, so that simply writing to those memory locations writes them to the card, and reading those memory locations reads them from the card.

Monitor

This is the TV-like thing that should be sitting on your computer desk. It's usually a cathode ray-tube monitor. They work by using an electrical grid to deflect a stream of electrons onto light-emitting phosphors. If you're rich, then you might have an LCD monitor. I forget exactly how they work, but they have a liquid crystal which emits light when stimulated in a different way from CRTs. This allows them to be much thinner as well as some other benefits. In both cases, they divide the screen up into a bunch of really small dots called pixels. Each of these pixels has three colors in them: red, green, and blue. The color of the pixel is determined by the intensity of each of these three components. Since they're so small, your brain naturally combines them into a solid color. The same effect works for pixels which are next to each other. Since they're so small and so close, your brain naturally unifies them into fairly contiguous splotches of color. Your brain will also tend to average the colors of nearby pixels together, so you can produce certain colors by pixels of different color in close proximity.

Video Card

This is a device that has both RAM and a DAC (Digital to Analog Converter). It stores the colors for each pixel on the screen in binary form in its RAM. It then converts these binary values to an analog signal and sends this to the monitor. That usually happens around 70 times every second. This number is called the refresh rate. Refresh rates that are high enough to not produce eye strain are 72 and above. A refresh rate of 120 is supposed to be indistinguishable from a piece of paper. As a note, there is a new race of monitors which take digital signals, making the life of the video card a bit easier. The basics are still the same though, it's just a matter of the protocol on the monitor cable. Another feature of video cards is display acceleration. It is standard for video cards to have functions to accelerate 2D applications such as drawing a rectangle of a certain color or copying an image from one place to another. Newer video cards have 3D acceleration capabilities. They're still all fundamentally the same, though.

Hard Drive

This is a common method of storage. It's not nearly as fast as RAM, and it's not directly accessible by the CPU. In point of fact, the CPU doesn't really know anything about the hard drive at all. Programs running on the CPU merely interface with a controlling card. This is done pretty universally, though.

Hard drives are normally separated into sections called partitions. Each partition is a separate section on the hard drive. There is a strange scheme used on hard drives that involves primary, logical and extended partitions, but it's not really very important. All you need to know is that they are numbered starting from 1.

Software

Software is a collection of instructions and data which is run on the CPU. In modern parlance it often refers more specifically to software which is designed to be sold, but we'll take it to mean anything which is meant to be executed (directly or indirectly) on the CPU.

Another name for software is a program, or code. Code generally refers specifically to the instructions that are to be executed in the CPU. Sometimes a program is called a binary because it is made up of binary instructions.

Protected Memory

Protect memory is a scheme where by software in one area of memory has more privileges than software running in other areas of memory.

The normal scheme is to set up levels in the RAM (this is something that the CPU itself does and is not tied to the physical RAM at all). Software executing in level 0 can access any RAM anywhere. Software executing in level 1 can access lowers levels and its own level, but it cannot access any RAM that is in level 0.

This allows there to be privileged code which has its run of the system and can thus contain other, less trusted code, and prevent it from taking over the system and doing bad things.

As a note, memory can also be broken into protected segments where code in each segment cannot access code in any other segment.

BIOS

BIOS - Basic Input Output Subroutines. The BIOS is a collection of software normally stored on the motherboard whose responsibility it is to set up various devices like monitors, video cards, and hard drives, to a state of minimal functionality. This is described more in the booting page. However, since BIOS code is normally stored on the motherboard and is very tied to a particular computer, it is often called firmware because while not hardware, it is much closer to hardware than normal software is.

Kernel Space

The kernel is that software which runs in the highest level of protect memory. It normally handles tasks such as creating a uniform interface for hardware, controlling what programs get to run on the CPU for how long, and how much memory each program gets and from where.

Code which runs with full privileges on the system is said to run in kernel space.

User Space

User space is the opposite of kernel space. User space is the "place" where code that does not have full privileges on the computer runs.

This distinction usually parallels the distinction between root (administrator, superuser, etc.) and normal users. Normal users are only allowed to modify their own files, whereas root can modify all files. Kernel space versus user space is a lot like that. User space programs are restricted to modifying only memory and files that they own, and they can only provide hints about how much CPU time they want. Kernel space programs, by contrast, get whatever they want.

SWAP

Swap is a method where data normally stored in RAM is temporarily stored on a hard disk. The reason for this is that hard drive space is much cheaper than RAM is. The process is that sections of RAM that aren't needed in the near future are written to the disk in an organized fashion and new data can be stored in that memory. Later when the data written to disk is needed, it is "swapped" into RAM, hence the name. The process involves the data on disk that is now needed being written into RAM and the data in RAM which is no longer needed being written to the disk.

One might ask why RAM is used at all of the disk can do it. The reason is speed. A hard drive is literally about three orders of magnitude or 1000 times slower than RAM is.

Booting, or the Bootup Process

When a computer is first turned on, it goes through a process known as booting. This is where it gets itself ready to go into its normal state of dealing with users. This process is described in the booting page.

Terminal

A terminal is some piece of hardware or software that is capable of printing text and capturing keystrokes. Basically in provides keyboard input to a running program and prints the text output of that program in some fashion. Common terminals include, but are not limited too:

Other Introductory Material

  1. The Boot Process
  2. Linux/Unix Terminology

lansdoct@cs.alfred.edu
Last modified: Thu Sep 23 15:29:35 EDT 1999