Computer System Architecture
At the core of every computer system is the CPU and hardware that make it run. These are the physical components that interact with the OS and applications to do the things we need done. Let's start at the heart of the system and work our way out.
Central Processing Unit (CPU)
The CPU is the heart of the computer system. The CPU consists of an arithmetic logic unit (ALU), which performs arithmetic and logical operations, and a control unit, which extracts instructions from memory and decodes and executes the requested instructions. Two basic designs of CPUs are manufactured for modern computer systems:
- Reduced Instruction Set Computing (RISC) Uses simple instructions that require a reduced number of clock cycles
- Complex Instruction Set Computing (CISC) Performs multiple operations for a single instruction
The CPU requires two inputs to accomplish its duties: instructions and data. The data is passed to the CPU for manipulation, where it is typically worked on in either supervisor or problem state. In problem state, the CPU works on the data with nonprivileged instructions. In supervisor state, the CPU executes privileged instructions.
A superscalar processor is one that can execute multiple instructions at the same time, whereas a scalar processor can execute only one instruction at a time. You will need to know this distinction for the exam. |
The CPU can be classified in one of several categories, depending on its functionality. Both the hardware and software must be supported to use these features. These categories include the following:
- Multiprogramming Can interleave two or more programs for execution at any one time.
- Multitasking Can perform one or more tasks or subtasks at a time.
- Multiprocessor Supports one or more CPUs. As an example, Windows 98 does not support the multiprocessor, whereas Windows 2003 does.
The data that CPUs work with is usually part of an application or program. These programs are tracked by a process ID, or PID. Anyone who has ever looked at Task Manager in Windows or executed a ps command on a Linux machine has probably seen a PID number. Fortunately, most programs do much more than the first C code you probably wrote that just said, "Hello World." Each line of code or piece of functionality that a program has is known as a thread.
The data that the CPU is working with must have a way to move from the storage media to the CPU. This is accomplished by means of the bus. The bus is nothing more than lines of conductors that transmit data between the CPU, storage media, and other hardware devices.
Storage Media
The CPU uses memory to store instructions and data. Therefore, memory is an important type of storage media. The CPU is the only device that can directly access memory. Systems are designed that way because the CPU has a high level of system trust. Memory can have either physical or logical addresses. Physical addressing refers to the hard-coded address assigned to the memory. Applications and programmers writing code use logical addresses. Not only can memory be addressed in different ways, but there are also different types of memory. Memory can be either nonvolatile or volatile. Examples of both are given here:
- Read-only memory (ROM) is nonvolatile memory that retains information even if power is removed. Types of ROM include Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), Flash memory, and programmable logic devices (PLD). ROM is typically used to load and store firmware.
- Random access memory (RAM) is volatile memory. If power is lost, the data is destroyed. Types of RAM include static RAM, which uses circuit latches to represent binary data, and dynamic RAM, which must be refreshed every few milliseconds.
Secondary Storage
Although memory plays an important part in the world of storage, other long-term types of storage are also needed. One of these is sequential storage. Anyone who has owned an IBM PC with a tape drive knows what sequential storage is. Tape drives are a type of sequential storage that must be read sequentially from beginning to end. Another well-known type of secondary storage is direct-access storage. Direct-access storage devices do not have to be read sequentially; the system can identify the location of the information and go directly to it to read the data. Hard drives are an example of a sequential storage device: They are used to hold data and software. Software is the operating system or an application that you've installed on a computer system.
Virtual Memory and Virtual Machines
Modern computer systems have developed other ways in which to store and access information. One of these is virtual memory. Virtual memory is the combination of the computer's primary memory, RAM, and secondary storage, the hard drive. By combining these two technologies, the OS can make the CPU believe that it has much more memory than it actually does. When RAM is depleted, the CPU begins saving data onto the computer's hard drive. This information is saved in pages that can be swapped back and forth between the hard drive and RAM, as needed. Individuals who have opened more programs on their computers than they've had enough memory to support are probably familiar with the operation of virtual memory.
Closely related to virtual memory are virtual machines. VMWare and VirtualPC are the two leading contenders in this category. A virtual machine enables the user to run a second OS within a virtual host. For example, a virtual machine will let you run another Windows OS, Linux x86, or any other OS that runs on x86 processor and supports standard BIOS booting. Virtual machines are used primarily for development and system administration, and to reduce the number of physical devices needed.