 |  | Page & Feed Options Bookmark This  |
 Table of Contents 
|
Introduction By Andrew Binstock
Pacific Data Works, LLC
The advent of many new systems and processor architectures has made it challenging for many people—even specialists—to keep track of what the various terms mean. Specifically, it can be difficult to remember the differences between terms like multithreading, multiprocessing, symmetrical multiprocessing, hyper-threading, OpenMP and other terms that imply the presence of multiple processing streams. The easiest way to keep the concepts straight is to recognize their evolution. This overview will help you understand what is the main trunk and which are the branches.
In the beginning...
A few years ago, PC computing was simple: a desktop system had one processor that ran one program at a time. This simple model was the easy-to-understand world of MS-DOS* and Windows* 3.x. A user ran a program, which meant the operating system loaded into memory and the processor was entirely given over to its execution until the program completed. If the operating system needed the processor, it had to issue an interrupt. In response to the interrupt, the program would save its current state, suspend operations, and give control to the operating system.
Over time, other ways of handling interrupts were introduced, including the jury-rigging necessary to run two programs simultaneously. On MS-DOS, this required one program to run, finish executing, and then wait semi-dormant in memory while another program executed. It would wait for a specific interrupt to bring it to life and suspend the other program. Such software was called Terminate-and-Stay-Resident (TSR), which for a generation of users provided simple services like spooling print files or expanding keyboard macros. For administrators, TSR software denoted something altogether different: instability. TSR was a nightmare to support because it was trying to get the operating system to do something it was not built to do: switch between two running programs. Other operating systems, such as UNIX*, had means to do this, but MS-DOS did not. MS-DOS was a single-threaded operating system intended to run on a single processor—the simplest of all configurations.
|