www.wikidata.de-de.nina.az
Multithreading auch Nebenlaufigkeit Mehrstrangigkeit oder Mehrfadigkeit genannt bezeichnet in der Informatik das gleichzeitige oder quasi gleichzeitige Abarbeiten mehrerer Threads Ausfuhrungsstrange innerhalb eines einzelnen Prozesses oder eines Tasks ein Anwendungsprogramm Im Gegensatz zum Multitasking bei dem mehrere unabhangige Programme voneinander abgeschottet quasi gleichzeitig ausgefuhrt werden sind die Threads eines Anwendungsprogramms nicht voneinander abgeschottet und konnen somit durch sogenannte Race Conditions Fehler verursachen die durch Synchronisation vermieden werden mussen Sowohl Multithreading als auch Multitasking konnen entweder auf nur einem Prozessorkern ausgefuhrt werden als auch zusatzlich mit Multiprocessing kombiniert werden echt parallele Ausfuhrung durch mehrere Prozessorkerne Software BearbeitenSeit Mehrkernprozessoren zunehmend verbreitet sind ist softwareseitiges Multithreading rucklaufig hier ist in aller Regel nur ein Prozessorkern beteiligt aus Sicht der Hardware und im Allgemeinen des Betriebssystems liegt nur ein einziger Programmausfuhrungs Zweig vor Die scheinbar vorhandene Gleichzeitigkeit wird Software intern also innerhalb des Anwendungsprogramms und nur von ihm gesteuert in Wirklichkeit durch geschickte Sequentialisierung Thread Priorisierung und einer logischen Abstraktion des Multiplexverfahrens erzeugt Einzelne Threads eines Prozesses Tasks konnen sehr schnell auf zeitkritische Ereignisse reagieren wahrend andere Threads langwierige Berechnungen durchfuhren Zum Beispiel kann eine Videobearbeitungs Software eine Szene im Hintergrund berechnen Thread 1 wahrend sie im Vordergrund auf Eingaben des Benutzers reagiert Thread 2 Ohne weitere Hardwareunterstutzung reduziert das Multithreading die Gesamtsystemleistung durch den beim Kontextwechsel entstehenden Overhead in geringem Masse bei Ablaufen die voneinander unabhangig sein sollten kann die Anwendung stattdessen grosse Performance Schube erwirken Es wird auch unterschieden ob das Multithreading einzig im Anwendungsprogramm implementiert ist oder ob es vom Betriebssystem unterstutzt stattfindet Ist es rein anwendungsseitig implementiert so hat der Programmierer volle Kontrolle wann welcher Thread welche Ressourcen erhalt Da das gesamte Programm fur das Betriebssystem jedoch nur wie ein Ablauf erscheint wird es komplett eingefroren sobald es Ressourcen Dienste anfordert die gerade nicht zur Verfugung stehen das ist das Primarproblem bei der Verarbeitung von Nutzereingaben auf einer grafischen Oberflache und der Abarbeitung von internen Daten und Prozeduren Ist das Multithreading Betriebssystem unterstutzt so kann dieses jene Teile einer Anwendung kennen die nicht blockiert sind die Anwendung kann teilweise weiterarbeiten Hardware BearbeitenDas hardwareseitige Multithreading unterscheidet sich vom softwareseitigen dadurch dass die Hardware eines Prozessors das scheinbare oder echte gleichzeitige Abarbeiten mehrerer Threads unterstutzt Die Software muss diese Fahigkeit verwenden und entsprechend in Threads aufgeteilt sein und diese beim Betriebssystem entsprechend anlegen registrieren Moderne Betriebssysteme teilen die Last einer Multithreading verwendenden Anwendung vollautomatisch auf alle vorhandenen Prozessorkerne auf mit dem Hochsttakt eines einzelnen Kernes so wird eine verbesserte Reaktivitat des Betriebssystems gewahrleistet als auch die Performance jeder einzelnen Anwendung erhoht Bei symmetrischen Multiprozessorsystemen kann die Rechenarbeit eines Prozesses Tasks durch Multithreading auf mehrere Systemprozessoren verteilt werden Es muss hierbei genau unterschieden werden zwischen hardwareseitigem Multithreading und Multiprocessing Bei Multithreading laufen die Threads im selben Task Kontext was fur die Hardware sehr viel einfacher umzusetzen ist z B wird keine zweite MMU Seitentabelle benotigt Bei echtem Multiprocessing ist jeder Ablauf ein eigener Prozess jedoch konnte die Auslagerung von Threads auf physisch vorhandene Prozessorkerne ebenso als echt nebenlaufig eingestuft werden Beim hardwareseitigen Multithreading entsteht nur marginaler Overhead wahrend des Kontextwechsels sofern die Anzahl der Rechenzeit fordernden Software Threads die Anzahl Hardware unterstutzter Threads nicht ubersteigt und somit jeder Thread seine CPU Ressourcen vor allem den Registersatz stets behalten kann Zusatzlich konnen sowohl bei Hardware seitigem Multithreading wie auch bei Multitasking Prozessor Funktionseinheiten die von einem Rechenablauf gerade nicht verwendet werden von einem anderen Thread verwendet werden meist Hyper Threading genannt Durch die Vermeidung von Pipeline Hazards konnen dabei unproduktive Taktzyklen vermieden werden die Gesamtsystemleistung pro CPU bzw Prozessorkern steigt Weblinks BearbeitenMSDN Developer Center Parallel Computing im MSDNNormdaten Sachbegriff GND 4377481 7 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Multithreading amp oldid 204334876