Multiprocessing: Funktion & Besonderheiten

SMP, Multitasking & Multithreading

SMP-Computer arbeiten mit mehreren gleichwertigen Prozessoren. Jede CPU besitzt den vollen Zugriff auf die Ressourcen des Systems wie Arbeitsspeicher, Grafikkarte, Controller und sonstige Peripherie. Zusätzlich verfügen SMP-Systeme über Mechanismen, um exklusive Ressourcen zu synchronisieren. Hierzu zählen beispielsweise die Inhalte der in den einzelnen Prozessoren integrierten Caches.

Das Betriebssystem muss die SMP-Unterstützung des Systems erkennen und entsprechend nutzen können. Unter anderem ist dafür Multitasking oder Multithreading erforderlich. Multitasking ist die Fähigkeit eines Betriebssystems, verschiedene unabhängige Applikationen parallel laufen zu lassen. Beim Multithreading ist eine Anwendung so ausgelegt, dass mehrere CPUs sie parallel abarbeiten können. Beispielsweise kann ein Thread Daten für den Ausdruck aufbereiten, während ein anderer den Benutzer im Vordergrund weiterarbeiten lässt.

Parallelisierung: Einzelne Berechnungen werden parallel von beiden Prozessoren durchgeführt.
Parallelisierung: Einzelne Berechnungen werden parallel von beiden Prozessoren durchgeführt.

Alle Tasks oder Threads teilen sich die Ressourcen des Rechners. Das Betriebssystem teilt ihnen dazu feste Rechenzeiten (Zeitscheiben) des Prozessors zu, die dieser fortlaufend abarbeitet. Dadurch entsteht auch bei Systemen mit nur einem Prozessor der Eindruck, dass verschiedene Anwendungen parallel laufen.

Bei Multiprozessor-Systemen kann das Betriebssystem die Tasks oder Threads auf die installierten CPUs aufteilen. Ist ein Programm multithreaded geschrieben, laufen Teile der Anwendung tatsächlich parallel ab, die Ausführungsgeschwindigkeit steigt.

Die Multithread-Programmierung gestaltet sich durch die zeitliche Ablaufsteuerung und Synchronisierung der Threads jedoch reichlich kompliziert. Auch lässt sich nicht jede Anwendung oder Teilaufgabe in mehrere parallel ausführbare Einheiten splitten. Zudem ist das Debugging problematisch, da die Laufzeiten der einzelnen Threads je nach System unterschiedlich sein können. Die meiste Software ist deshalb singlethreaded programmiert.