In diesem Whitepaper erfahren Sie, wie wichtig Multitasking und Multithreading in Ihrer Anwendung sind.
Ein Multicore-System ist eine Einzelprozessor-CPU, die zwei oder mehr Kerne enthält, wobei jeder Kern unabhängige Mikroprozessoren beherbergt. Ein Multicore-Mikroprozessor führt das Multiprocessing in einem physischen Gehäuse durch. Multicore-Systeme teilen sich Rechenressourcen, die oft in Multiprozessorsystemen wie dem L2-Cache und dem Front-Side-Bus dupliziert werden.
Multicore-Systeme bieten eine ähnliche Leistung wie Multiprozessorsysteme, aber oft zu deutlich niedrigeren Kosten, da ein Motherboard mit Unterstützung für mehrere Prozessoren, wie mehrere Prozessor-Sockets, nicht erforderlich ist.
In der Datenverarbeitung (Computing) ist das Multitasking eine Methode, bei der mehrere Tasks, auch Prozesse genannt, gemeinsame Verarbeitungsressourcen wie eine CPU gemeinsam nutzen. Mit einem Multitasking-Betriebssystem wie Windows XP können Sie mehrere Anwendungen gleichzeitig ausführen. Multitasking bezeichnet die Fähigkeit des Betriebssystems, schnell zwischen den einzelnen Rechen-Tasks zu wechseln, um den Eindruck zu vermitteln, dass die verschiedenen Anwendungen mehrere Aktionen gleichzeitig ausführen.
Da sich die CPU-Taktraten im Laufe der Zeit stetig erhöht haben, werden Anwendungen nicht nur schneller ausgeführt, sondern Betriebssysteme können auch schneller zwischen Anwendungen wechseln. Dies bietet eine bessere Gesamtleistung. Viele Aktionen können gleichzeitig auf einem Computer ausgeführt werden und einzelne Anwendungen können schneller ausgeführt werden.
Bei einem Computer mit einem CPU-Kern wird immer nur ein Task ausgeführt, was bedeutet, dass die CPU aktiv Anweisungen für diesen Task ausführt. Multitasking löst dieses Problem, indem festgelegt wird, welcher Task zu einem bestimmten Zeitpunkt ausgeführt werden kann und wann ein anderer wartender Task an der Reihe ist.
Abbildung 1: Single-Core-Systeme planen Tasks auf einer CPU für Multitasking
Bei der Ausführung auf einem Multicore-System können Multitasking-Betriebssysteme mehrere Tasks gleichzeitig ausführen. Mehrere Computer-Engines arbeiten unabhängig voneinander an verschiedenen Tasks.
Auf einem Dual-Core-System können beispielsweise vier Anwendungen wie Textverarbeitungs-, E-Mail-, Webbrowsing- und Antivirensoftware gleichzeitig auf einen separaten Prozessorkern zugreifen. Sie können mehrere Tasks ausführen, indem Sie E-Mails abfragen und gleichzeitig einen Brief eingeben, wodurch die Gesamtleistung für Anwendungen verbessert wird.
Abbildung 2: Dual-Core-Systeme ermöglichen Multitasking-Betriebssystemen die gleichzeitige Ausführung von zwei Tasks
Das Betriebssystem führt mehrere Anwendungen effizienter aus, indem es die verschiedenen Anwendungen bzw. Prozesse auf die einzelnen CPU-Kerne aufteilt. Der Computer kann die Arbeit verteilen – jeder Kern verwaltet und durchläuft halb so viele Anwendungen wie zuvor – und ermöglicht einen besseren Gesamtdurchsatz und eine bessere Leistung. Tatsächlich werden die Anwendungen parallel ausgeführt.
Mit Multithreading wird die Idee des Multitasking auf Anwendungen erweitert, sodass bestimmte Operationen innerhalb einer einzigen Anwendung in einzelne Threads unterteilt werden können. Die einzelnen Threads können parallel ausgeführt werden. So kann das Betriebssystem die Bearbeitungszeit nicht nur unter verschiedenen Anwendungen aufteilen, sondern auch unter verschiedenen Threads innerhalb einer Anwendung.
In einem Multithread-Programm von NI LabVIEW kann eine Beispielanwendung in vier Threads unterteilt werden: einen Thread zur Benutzeroberfläche, einen Thread zur Datenerfassung, Netzwerkkommunikation und einen Thread zur Protokollierung. Die Prioritäten dafür können Sie so festlegen, dass sie unabhängig voneinander arbeiten. In Multithread-Anwendungen können daher mehrere Tasks parallel zu anderen auf dem System ausgeführten Anwendungen ausgeführt werden.
Abbildung 3 Dual-Core-System ermöglicht Multithreading
Anwendungen, die das Multithreading verwenden, bieten eine ganze Reihe von Vorteilen, z. B.:
In vielen Anwendungen werden Ressourcen (z. B. Messgeräte) synchron aufgerufen. Diese Instrumentenaufrufe dauern oft sehr lange. Bei einer Anwendung mit nur einem Thread blockiert oder verhindert ein synchroner Aufruf die Ausführung aller anderen Tasks innerhalb der Anwendung, bis die Operation abgeschlossen ist. Dieses Blockieren wird durch das Multithreading verhindert.
Solange der synchrone Aufruf in einem Thread ausgeführt wird, werden andere Teile des Programms, die nicht von diesem Aufruf abhängig sind, in anderen Threads ausgeführt. Die Ausführung der Anwendung wird so lange fortgesetzt, bis der synchrone Aufruf abgeschlossen ist. Dadurch verbessert eine Multithread-Anwendung die Effizienz der CPU, da sie nicht inaktiv ist, wenn ein Thread der Anwendung ausgeführt werden könnte.
LabVIEW unterteilt jede Anwendung automatisch in mehrere Ausführungs-Threads. Die komplexen Tasks der Thread-Verwaltung sind im LabVIEW-Ausführungssystem transparent dargestellt.
Abbildung 4: LabVIEW verwendet mehrere Ausführungs-Threads
LabVIEW verwendet preemptives Multithreading auf Betriebssystemen, die diese Funktion bieten. LabVIEW arbeitet auch mit kooperativem Multithreading. Betriebssysteme und Prozessoren mit preemptivem Multithreading verwenden nur eine begrenzte Anzahl von Threads, sodass diese Systeme in einigen Fällen auf das kooperative Multithreading zurückgreifen.
Das Ausführungssystem zieht dabei VIs vor, die Threads verwenden. Eine begrenzte Anzahl von Threads ist jedoch verfügbar. Für besondere parallele Anwendungen verwendet das Ausführungssystem kooperatives Multitasking, sofern verfügbare Threads gerade beschäftigt sind. Das Betriebssystem übernimmt das preemptive Multitasking zwischen der Anwendung und anderen Tasks.