Multiprocessing: Functions and Features

SMP, Multitasking and Multithreading

SMP computers integrate multiple processors of equal value. Each CPU can access the full range of system resources such as RAM, graphic card, controller and other peripheral devices. Additionally, SMP systems use mechanisms to synchronize exclusive resources. This includes the content of the cache integrated in each single processor, for example.

The operating system has to recognize SMP support of the system and be able to make use of it. For example, this requires the ability of multitasking or multithreading. Multitasking describes the ability of the operating system to run different and independent applications at the same time. Multithreading allows for parallel processing of an application by more than one CPU. For example, one thread can process print data, while another allows the user to continue his work in the foreground.

All tasks or threads share the resources of the computer. The operating system assigns fixed processing times of the processor which are completed in their order. This has the effect that also single processor systems appear to run different applications parallel. In the case of multiprocessor systems the operating system is able to distribute tasks or threads to every installed CPU. If software is programmed multithreaded, parts of applications in fact run parallel which results in increased execution speed. However, time-focused control of processing as well as the synchronization of threads make multithreaded programming a very complex task. Also, not every application or part of a task can be split into multiple units which can be processed simultaneously. Additionally, debugging is difficult, since processing times of single threads can be different depending on each system. For these reasons, most software is programmed single threaded.