Inhaltsverzeichnis. Vorwort... 9

Größe: px
Ab Seite anzeigen:

Download "Inhaltsverzeichnis. Vorwort... 9"

Transkript

1

2 Inhaltsverzeichnis Vorwort... 9 Einleitung Für wen ist dieses Buch gedacht Für wen ist dieses Buch nicht gedacht Vorkenntnisse Aufbau dieses Buchs Der ideale Einstiegspunkt für Sie Konventionen und Besonderheiten dieses Buchs Systemanforderungen Beispieldateien zu diesem Buch Danksagung Support Bleiben Sie in Verbindung Einführung in die parallele Programmierung Multicore-Programmierung Mehrfache Befehlsströme, mehrfache Datenströme Multithreading Synchronisierung Speedup Das Amdahlsche Gesetz Gustafsons Gesetz Entwurfsmuster Gleichzeitigkeit erkennen Algorithmische Struktur Unterstützende Strukturen Zusammenfassung Schnellreferenz Aufgabenparallelität Einführung Threads Die Klasse Task Func<TResult>-Delegaten verwenden... 44

3 6 Inhaltsverzeichnis Unbehandelte Ausnahmen in Aufgaben Fallbeispiel: Sortieren Bubblesort Einfügesortieren Pivotsortieren Verwendung der Barrier-Klasse Überarbeitung der Pivotsortierung Aufgaben abbrechen Ein Beispiel Beziehungen zwischen Aufgaben Fortsetzungsaufgaben Eltern/Kind-Aufgaben Die Work-Stealing-Warteschlange Zusammenfassung Schnellreferenz Datenparallelität Sequenzielle Schleifen in parallele Aufgaben umwandeln Wann lohnt sich die Parallelisierung? Die parallele for-schleife Schleifen abbrechen Ausnahmen abfangen Abhängigkeiten Reduktion Verwendung des MapReduce-Entwurfmusters Beispiel: Worthäufigkeiten Zusammenfassung Schnellreferenz PLINQ Einführung in LINQ PLINQ PLINQ-Operatoren und -Methoden Der ForAll-Operator ParallelExecutionMode WithMergeOptions AsSequential AsOrdered WithDegreeOfParallelism Ausnahmebehandlung Abbruch

4 Inhaltsverzeichnis 7 Reduktion Verwendung von MapReduce in PLINQ Zusammenfassung Schnellreferenz Gleichzeitige Auflistungen Allgemeine Konzepte Das Producer-Consumer-Paradigma (Erzeuger-Verbraucher) Low-Level-Synchronisierung SpinLock SpinWait ConcurrentStack ConcurrentQueue ConcurrentBag ConcurrentDictionary BlockingCollection Zusammenfassung Schnellreferenz Eigene Implementierungen Gelegenheiten für eigene Implementierungen erkennen Eigene Producer-Consumer-Auflistungen Aufgaben-Partitionierer Fortgeschrittene Anwendungen für eigene Partitionierer Partitioner<TSource> OrderablePartitioner<TSource> Eigene Taskplaner Der Kontext-Taskplaner Der Taskplaner Zusammenfassung Schnellreferenz Berichte und Debugging Debuggen mit Visual Studio Livedebugging Post-Mortem-Analysen durchführen Threads debuggen Mit dem Fenster Parallele Aufgaben arbeiten Mit dem Fenster Parallele Stapel arbeiten Die Threadansicht Die Aufgabenansicht

5 8 Inhaltsverzeichnis Mit dem Concurrency Visualizer arbeiten Die Ansicht CPU-Auslastung Die Ansicht Threads Die Ansicht Kerne Die Beispiel-Anwendung Zusammenfassung Schnellreferenz Stichwortverzeichnis Über den Autor

6 Kapitel 2 Aufgabenparallelität In diesem Kapitel: Einführung 36 Unbehandelte Ausnahmen in Aufgaben 47 Fallbeispiel: Sortieren 53 Aufgaben abbrechen 59 Beziehungen zwischen Aufgaben 62 Zusammenfassung 72 Schnellreferenz 73 35

7 36 Kapitel 2: Aufgabenparallelität Nachdem Sie dieses Kapitel durchgearbeitet haben, werden Sie in der Lage sein, parallele Aufgaben zu erzeugen, in einer Aufgabe ausgeworfene unbehandelte Ausnahmen abzufangen und zu behandeln, Aufgaben kooperativ abzubrechen, Beziehungen zwischen Aufgaben zu definieren, eine Work-Stealing-Warteschlange zu beschreiben In Kapitel 1,»Einführung in die parallele Programmierung«, wurde das Konzept der Parallelität eingeführt. In diesem Kapitel geht es zunächst speziell um die Aufgabenparallelität und das nachfolgende Kapitel ist dann der Datenparallelität gewidmet. Aufgaben (englisch Tasks) sind ein fundamentales Element der parallelen Programmierung. Aufgabenparallelität bedeutet, Aufgaben mithilfe mehrerer Prozessoren parallel auszuführen. Ziel der Parallelisierung ist es, die Prozessorauslastung zu optimieren und natürlich die Leistung zu verbessern. Gibt es mehr verfügbare Prozessoren, skaliert Ihre Anwendung automatisch, da auf den zusätzlich verfügbaren Prozessoren zusätzliche Aufgaben ausgeführt werden können. Der Grad der Leistungsverbesserung in Abhängigkeit von der Anzahl der Prozessoren kann nach Amdahl oder nach Gustafson berechnet werden beide Formeln wurden im vorhergehenden Kapitel definiert. Parallele Aufgaben verarbeiten üblicherweise Eingabedaten. Bei der Aufgabenparallelität operieren die parallelen Aufgaben typischerweise auf einer Sammlung verwandter Daten. Einführung Es gibt verschiedene Wege, eine parallele Aufgabe auszuführen. In diesem Abschnitt werden wir uns beginnend mit der Methode Parallel.Invoke einen Überblick über die zur Verfügung stehenden Techniken verschaffen. Stellen Sie sich vor, Sie hätten drei Methoden (MethodeA, MethodeB und MethodeC) vorliegen, die alle unterschiedliche Eingabedaten verarbeiten. Werden die Methoden sequenziell ausgeführt, ist die resultierende Ausführungszeit gleich der Summe der Ausführungszeiten der einzelnen Methoden, siehe Abbildung 2.1. Dauer MethodeA 5 ms MethodeB 10 ms 20 ms MethodeC 5 ms Abbildung 2.1 Bei sequenzieller Ausführung werden für die Ausführung der drei Methoden insgesamt 20 Millisekunden benötigt Zwischen MethodeA, MethodeB und MethodeC gibt es keine Abhängigkeiten. Werden die Methoden in Aufgaben umgewandelt, sind diese ebenfalls vollkommen unabhängig voneinander und man sagt, sie seien embarassingly parallel. 1 Dies ist ein entscheidender Punkt, denn es bedeutet, dass die Aufgaben ohne Synchronisie- 1 Womit dem Umstand Ausdruck verliehen wird, dass die Methoden ideale Voraussetzungen für eine mögliche Parallelisierung mitbringen. (Anm. d. Übersetzers)

8 Einführung 37 rungsmechanismen (wie Semaphore oder Monitor-Objekte) parallel ausgeführt werden können. Ohne Synchronisierung ist die erzielte Leistung höher und der betreffende Teil der Anwendung skaliert besser. Nicht zu vergessen, dass Synchronisierungstechniken immer die Komplexität erhöhen, wodurch der Code schwieriger zu verwalten und zu debuggen ist. Wenn eine Gruppe von Aufgaben parallel ausgeführt wird, ist die resultierende Ausführungszeit gleich der Zeit, die von der längsten Aufgabe benötigt wird. In Abbildung 2.2 benötigt AufgabeB am längsten (10 ms). Folglich ist die Gesamtausführungszeit für die ganze Gruppe ebenfalls gleich 10 ms also nur die Hälfte der Zeit, die für die sequenzielle Ausführung der Methoden benötigt wird (siehe Abbildung 2.1). Voraussetzung ist allerdings, dass genügend Prozessoren zur Verfügung stehen (drei in diesem Fall), um die Aufgaben auch wirklich parallel ausführen zu können. AufgabeA AufgabeB AufgabeC 5 ms 5 ms 10 ms 10 ms Abbildung 2.2 Bei paralleler Ausführung ist die Gesamtausführungszeit im Idealfall gleich der Ausführungszeit der am längsten laufenden Methode Aufgaben werden zuerst geplant (Scheduling) und dann einem Thread zugewiesen. Der Thread wird schließlich von einem Prozessor ausgeführt. In der Vergangenheit waren Threads, nicht Aufgaben, die Grundeinheit mit der geplant wurde. Ein Thread ist ein asynchroner Ausführungspfad durch einen Prozess. Die Prozesse selbst sind inaktiv; Aktivität ist etwas, das man in Threads findet. Tatsächlich ist es sogar so, dass das Windows- Betriebssystem Prozesse ohne Threads automatisch schließt. Wozu sollte es auch einen Prozess aufrecht erhalten und verwalten, der über keinerlei potenzielle Aktivität verfügt. Nichtsdestotrotz sind Prozesse wichtig. Sie stellen die Ressourcen zur Verfügung, die für die Ausführung eines Programms benötigt werden, wie z. B. den virtuellen Speicher und die Handle-Tabelle. Ohne diese Ressourcen können die Threads nicht ausgeführt werden. Threads besitzen aber auch eigene Ressourcen, allen voran den Stapel und threadlokalen Speicher. Threads Aufgaben werden von Threads ausgeführt. Threads bilden den Motor Ihrer Anwendung und repräsentieren den auszuführenden Code. Grundwissen über Threads hilft Ihnen, das Konzept der Aufgaben zu verstehen. Dies gilt umso mehr, als der mit Aufgaben verbundene Overhead zum Teil auf Threads zurückgeht. Sie sehen, ohne Threads ist eine ausführliche Diskussion der parallelen Programmierung undenkbar. Das Windows-Betriebssystem steuert die Ausführung der Threads präemptiv (unterbrechend), d. h., es kann ihnen den Prozessor entziehen. Die einzelnen Threads bekommen jeder eine Priorität zugewiesen (die nachträglich angepasst werden kann) und erhalten dann im Rundlauf-Verfahren und unter Berücksichtigung ihrer Priorität den Prozessor zugeteilt. Zur Unterbrechung, also zum Entzug des Prozessors, kommt es z. B. in folgenden Fällen: Der Thread hat die ihm zugeteilte Zeit (Zeitscheibe) überschritten Ein Thread mit höherer Priorität wurde gestartet Der Thread hat sich selbst in den Wartezustand versetzt Eine Ein- oder Ausgabeoperation wird durchgeführt

9 38 Kapitel 2: Aufgabenparallelität Nichts ist umsonst nicht einmal Threads. Die Kosten eines Threads sind der Overhead, den er verursacht. Der größte Teil dieses Overheads entsteht durch den Stapel, den threadlokalen Speicher und durch Kontextwechsel. Die Standardgröße für den Thread-Stapel ist 1 MByte. Demnach würden 200 Threads zusammen 200 Mbyte Arbeitsspeicher belegen das ist keine Kleinigkeit mehr. Threadlokaler Speicher ist privater Speicher, der für jeden Thread reserviert wird und durchaus ins Gewicht fallen kann. Neben dem Speicher- Overhead kosten Threads auch Ausführungszeit: durch Kontextwechsel. Der größte Teil der Kosten wird dabei durch den Wechsel zwischen Benutzer- und Kernelmodus verursacht, wenn z. B. der aktuell ausgeführte Thread durch einen anderen Benutzermodus-Thread ausgetauscht wird. Die Kosten für die Kontextwechsel können den Vorteil zusätzlicher Threads empfindlich schmälern. Neben den Kontextwechseln gibt es noch andere Kosten, z. B. für das Hochfahren oder Auflösen der Threads. Die Threadpool-Implementierung von Microsoft.NET Framework hilft dabei, diese Kosten im Griff zu behalten und vereinfacht das Erzeugen, Starten und Auflösen von Threads. Pro verwalteter Anwendung gibt es genau einen.net Framework-Threadpool. Threadpools versuchen, die Kosten für die Threaderzeugung und -auflösung niedrig zu halten, indem sie bestehende Threads nach Möglichkeit wiederverwenden. Wird ein Thread nicht länger benötigt, hält das Betriebssystem ihn an oder weist ihm eine neue Arbeit zu. Ein spezieller Algorithmus sorgt für die dynamische Anpassung der Größe des Threadpools auf Basis der Threadnutzung und anderen Faktoren. Der Threadpool von.net Framework 4 ist der Standardtaskplaner für parallele Aufgaben in.net Framework. Wenn Sie eine Aufgabe starten, wird diese für die Ausführung geplant (Scheduling) und als Teil des Threadpools in eine Warteschlange gestellt. Ist ihre Zeit gekommen, wird die Aufgabe aus der Warteschlange genommen und zur Ausführung einem verfügbaren Thread zugeteilt. All dies geschieht erfreulicherweise weitgehend automatisch. Aufnahme in Erzeugte Aufgabe Threadpool Aufgabe A Warteschlange a = a+1;... 1 b = a/2; 2 3 Methode1 (a); Aufgabe A Methode2 (b); Zuteilung zu Thread Aufgabe A auf T1 4 Thread/Aufgabe wird ausgeführt Prozessor 1 Prozessor 2... Threadpool T2 T1 T3 Verfügbare Threads Abbildung 2.3 Ausführung von Aufgaben Die Klasse Task Innerhalb von.net Framework bildet die Klasse Task die logische Abstraktion einer Aufgabe. Mit ihrer Hilfe können Sie parallele Aufgaben für die Ausführung vorsehen und ausführen lassen. Vergessen Sie dabei aber nicht, dass Sie Aufgaben, anders als Threads, nicht direkt starten. Standardmäßig plant der Threadpool die Ausführung der Aufgabe, reiht sie in eine Warteschlange im Threadpool ein und führt sie schließlich auf einem verfügbaren Thread aus. Wenn wir also in diesem Buch davon sprechen, dass eine Aufgabe gestartet wird, meinen wir damit, dass die Aufgabe zuerst in eine Warteschlange gestellt und später auf einem verfügbaren Thread aus dem Threadpool ausgeführt wird.

10 Einführung 39 Die Methode Parallel.Invoke Es gibt verschiedene Wege, eine Aufgabe für die Ausführung zu planen. Am einfachsten ist es, die Methode Parallel.Invoke zu verwenden. Das folgende Beispiel führt zwei parallele Aufgaben aus: eine für MethodA und eine zweite für MethodB. Die Version von Parallel.Invoke, die dabei verwendet wird, übernimmt als einziges Argument ein Array von Action-Delegaten. Action-Delegate haben keine Parameter und den Rückgabetyp void. Parallel.Invoke(new Action[] { MethodA, MethodB }); Mithilfe der Methode Parallel.Invoke können Sie mehrere Aufgaben schnell und bequem parallel ausführen lassen. Das Einsatzgebiet der Methode ist allerdings beschränkt, denn: Parallel.Invoke erzeugt zwar Task-Objekte für die Aufgaben, liefert sie aber nicht zurück. Auch der Action-Delegat ist nur begrenzt verwendbar, da er weder Parameter noch Rückgabewert besitzt. Zudem ist Parallel.Invoke nicht so flexibel wie andere Lösungen und verwendet stets einen impliziten Task.WaitAll-Aufruf (siehe weiter unten). Die Methode Parallel.Invoke gibt keine Garantien bezüglich der Reihenfolge, in der die Aufgaben ausgeführt werden. In dem obigen Beispiel könnte die Aufgabe für MethodB also durchaus als Erstes ausgeführt werden. Das Einhalten einer bestimmten Reihenfolge ist immer mit Abhängigkeiten verbunden. Abhängigkeiten zwischen Aufgaben sollten Sie aber nach Möglichkeit vermeiden. Parallel.Invoke kehrt erst zurück, wenn die geplanten Aufgaben vollständig ausgeführt sind. Nehmen wir z. B. an, Parallel.Invoke wird aufgerufen, um zwei Aufgaben auszuführen. Die erste Aufgabe benötigt zur Ausführung 500 ms, die zweite Aufgabe benötigt 250 ms. Dann wird Parallel.Invoke nach 500 ms zurückkehren. Mit anderen Worten: Die Ausführungszeit von Parallel.Invoke ist gleich der Ausführungszeit der am längsten laufenden Aufgabe. HINWEIS Wie viele andere Aussagen in diesem Buch, ist auch diese Aussage eine vereinfachte Verallgemeinerung. Die tatsächliche Ausführungszeit hängt von vielen verschiedenen Faktoren ab, wie z. B. Overhead und aktueller Prozessorauslastung. Die Methode TaskFactory.StartNew Eine weitere Möglichkeit, Aufgaben auszuführen, bietet die Methode TaskFactory.StartNew. Die Klasse TaskFactory ist die Abstraktion eines Taskplaners. Eine Standardinstanz der Klasse eine Aufgabenfactory, die den Threadpool von.net Framework 4 verwendet ist über die Factory-Eigenschaft der Klasse Task verfügbar. Der folgende Beispielcode führt zwei Aufgaben mithilfe von TaskFactory.StartNew aus. var TaskA = Task.Factory.StartNew(MethodA); var TaskB = Task.Factory.StartNew(MethodB); Ebenso wie die Methode Parallel.Invoke arbeitet auch TaskFactory.StartNew mit einem Action-Delegaten. Anders als die Parallel.Invoke kehrt TaskFactory.StartNew allerdings sofort zurück, ohne erst auf die Beendigung der Aufgaben zu warten. Wie also erfährt man, wann die Aufgabe (oder Aufgaben) beendet wurde(n)? Zum Glück liefert die Methode StartNew ein Task-Objekt zurück und mithilfe der Instanzmethode Task.Wait können Sie explizit auf eine einzelne Aufgabe warten. Threads, die auf eine Aufgabe warten, bezeichnen wir

11 Stichwortverzeichnis A Abbruchmodell 59 Aufgaben 59 PLINQ 121 Schleifen 85 Abhängigkeiten Beispiele 79 chronologische 29 Reduktion 90, 122 Schleifen 79, 90 Action-Delegaten 39 AggregateException-Klasse 47, 88 Handle-Methode 51 InnerException-Eigenschaft 47 InnerExceptions-Eigenschaft 47, 88 Aggregate-Methode (PLINQ) 122 Algorithmische Struktur-Muster 31 Amdahlsches Gesetz 23 AsOrdered-Klausel 117 AsSequential-Klausel 116 AttachedToParent-Option 44, 69 Aufgaben 36 abbrechen 59 Abbruchmodell 59 Action-Delegaten 39 AggregateException 47, 88 auf Beendigung warten 40 Eltern/Kind-Beziehung 68 Fortsetzung 62 Func<TResult>-Delegaten 44 gleichzeitig starten 55 Reihenfolge (Schleifen) 79 Rollback 66 Rückgabewerte 44 Scheduling 38 starten 39, 44 Threads 37 Timeout 43 unbehandelte Ausnahmen 47 Unteraufgaben 68 Verbindungsthreads 40 Aufgabenparallelität 36 Auflistungen, gleichzeitige 132 BlockingCollection 150 ConcurrentBag 143 ConcurrentDictionary 147 ConcurrentQueue 143 ConcurrentStack 138 eigene Producer-Consumer-Auflistungen 161 IProducerConsumerCollection-Schnittstelle 134 Producer-Consumer-Paradigma 134 Synchronisierung 135 Aufrufliste-Fenster 198 Ausnahmen AggregateException 47, 88 behandeln 49 in parallelen Schleifen 88 in Verbindungsthread abfangen 47 OperationCanceledException 60 PLINQ 119 B Barrier-Klasse 55 Berichte 216 Beziehungen, zwischen Aufgaben 62 Eltern/Kind 68 Fortsetzung 62 Unteraufgaben 68 BlockingCollection 150 Bubblesort 53 C CancellationTokenSource-Klasse 59 CancellationToken-Struktur 59 Chunking 161 Concurrency Visualizer 209 Berichte 216 CPU-Auslastung 213 Kerne 217 starten 210 Threads 214

12 230 Stichwortverzeichnis ConcurrentBag 143 ConcurrentDictionary 147 ConcurrentQueue 143 ConcurrentStack 138 CPU-Auslastung 77, 213 Concurrency Visualizer 213 kontrollieren 77, 213 Windows Task-Manager 77 Cross-Core-Kontextwechsel 21 D Data Decomposition-Muster 29 Data Sharing-Muster 30 Datenparallelität 76 Deadlocks 43 Debugging 194 Aufgaben gruppieren 202 Aufrufliste zu Thread anzeigen 199 Aufrufliste-Fenster 198 Ausführungszustände 215 Concurrency Visualizer 209 Deadlocks erkennen 202 Livedebugging 195 Parallele Aufgaben-Fenster 201 Parallele Stapel-Fenster 204 Post-Mortem-Analysen 197 Threads 198, 214 Threads anhalten 199 Threads ausblenden 216 Threads isolieren 199 Threads wechseln 199 Threads-Fenster 198 Divide and Conquer Pattern 31 E Eigenschaften AggregateException.InnerException 47, 88 BlockingCollection-Eigenschaften 156 CancellationTokenSource-Eigenschaften 59 ConcurrentBag-Eigenschaften 144, 169 ConcurrentDictionary-Eigenschaften 148 ConcurrentQueue-Eigenschaften 143 ConcurrentStack-Eigenschaften 139 IProducerConsumerCollection-Eigenschaften 162 OrderablePartitioner-Eigenschaften 181 ParallelLoopState.IsExceptional 88 ParallelLoopState.IsStopped 85 ParallelLoopState.LowestBreakIteration 84 ParallelLoopState.ShouldExitCurrentIteration 84 SpinLock-Eigenschaften 136 SpinWait-Eigenschaften 137 Task.Factory 39 Task.Result 44 Task.Status 47 Einfügesortieren 54 Eltern/Kind-Beziehung 68 embarassingly parallel 36, 76 Entwurfsmuster 26 Algorithmische Struktur 31 Data Decomposition 28, 29 Data Sharing 30 Divide and Conquer 31 Finding Concurrency 28 Fork-Join 32 Geometric Decomposition 31 Group Tasks 29 Loop Parallelism 32 MapReduce 95 MapReduce (PLINQ) 126 Master-Worker 32 Order Tasks 29 Pipeline 31 Recursive Data 31 SPMD 32 Task Decomposition 28 Task Parallelism 31 Unterstützende Strukturen 32 F Finding Concurrency-Muster 28 Flynnsche Taxonomie 19 ForAll-Operator (PLINQ) 113 Fork-Join-Muster 32 Fortsetzungsaufgaben 62 Func<TResult>-Delegaten 44 G Geometric Decomposition Pattern 31 Gleichzeitigkeit 20, 28 Group Tasks-Muster 29 Gustafsons Gesetz 25

13 Stichwortverzeichnis 231 H Hardware-Architekturen 19 Hyper-Threading Technology 19 I Interleaving 20 IProducerConsumerCollection-Schnittstelle 134 K Kerne Concurrency Visualizer 217 Thread-Verteilung 217 Klassifizierung, von Hardware-Architekturen 19 Kontextwechsel 21, 135 L Lambda-Ausdrücke 45 Lastverteilung 169 Leistungsanalysen 209 Leistungs-Explorer 213 LINQ 104 Livedebugging 195 LongRunning-Option 44 Loop Parallelism-Muster 32 M MapReduce-Klasse 97 MapReduce-Muster 95 MapReduce-Muster (PLINQ) 126 Master-Worker-Muster 32 Methoden AggregateException.Handle 51 Barrier-Methoden 56 BlockingCollection-Methoden 156 ConcurrentBag-Methoden 144 ConcurrentDictionary-Methoden 148 ConcurrentQueue-Methoden 143 ConcurrentStack-Methoden 139 IProducerConsumerCollection-Methoden 162 OrderablePartitioner-Methoden 180 Parallel.Create 169 Parallel.For 81 Parallel.ForEach 81 Parallel.Invoke 39 ParallelLoopState.Break 84 ParallelLoopState.Stop 85 ParallelQuery.ForAll 114 Partitioner-Methoden 175 SpinLock-Methoden 136 SpinWait-Methoden 137 Task.Start 44 Task.Wait 40 Task.WaitAll 41 Task.WaitAny 41 TaskFactory.ContinueWhenAll 64 TaskFactory.ContinueWhenAny 66 TaskFactory.StartNew 39 TaskScheduler-Methoden 185 MIMD 20 MISD 20 Moores Gesetz 18 MPMD 20 Multicore-Architekturen 19 MIMD 20 MISD 20 MPMD 20 SIMD 20 SISD 19 SPMD 20 Multithreading 20 Interleaving 20 Kontextwechsel 21 Synchronisierung 22 O OperationCanceledException-Ausnahme 60 Order Tasks-Muster 29 OrderablePartitioner-Klasse 180 Overhead Parallelisierung 80 Threads 38 Oversubscription 21 P Parallele Aufgaben-Fenster 201 Parallele Programmierung Abbruchmodell 59 Abhängigkeiten 29 Algorithmische Struktur 31 Amdahlsches Gesetz 23

14 232 Stichwortverzeichnis Parallele Programmierung (Fortsetzung) Aufgabenparallelität 36 Datenparallelität 76 Debuggen 194 Entwurfsmuster 26 Gleichzeitigkeit erkennen 28 Gustafsons Gesetz 25 Implementierungsmechanismen 27 Lastverteilung 169 Speedup 23 Threadpool 38 Unterstützende Strukturen 32 Parallele Stapel-Fenster 204 Aufgabenansicht 208 Threadansicht 204 Übersichtsfenster 207 ParallelExecutionMode-Enumeration 115 Parallel-Klasse ForEach-Methode 81 For-Methode 81 Invoke-Methode 39 ParallelLoopState-Klasse 84 Break-Methode 84 IsExceptional-Eigenschaft 88 IsStopped-Eigenschaft 85 LowestBreakIteration-Eigenschaft 84 ShouldExitCurrentIteration-Eigenschaft 84 Stop-Methode 85 ParallelMergeOptions-Enumeration 116 ParallelQuery-Klasse ForAll-Methode 114 Partitioner-Klasse 175 Create-Methode 169 Partitionierer 161, 169 benutzerdefinierte (mit OrderablePartitioner) 180 benutzerdefinierte (mit Partitioner) 175 benutzerdefinierte (mit Partitioner.Create) 169 Blockgröße 169 Standardpartitionierer 76 Pipeline Pattern 31 Pivotsortieren (Quicksort) 54 PLINQ 108 Abbruchmodell 121 Aggregate-Methode 122 AsOrdered-Klausel 117 AsParallel-Klausel 109 AsSequential-Klausel 116 Ausführungsmodus 115 Ausnahmen 119 Ergebnisse durchlaufen 113 ForAll-Operator 113 geordnete Ergebnisse 118 Grad der Parallelisierung 118 ParallelMergeOptions-Enumeration 116 Reduktion 122 sequenzielle Ausführung 116 WithDegreeOfParallelism-Klausel 118 WithExecutionMode-Klausel 115 WithMergeOptions-Operator 116 Post-Mortem-Analysen 197 PreferFairness-Option 44 Producer-Consumer-Auflistungen 161 Producer-Consumer-Paradigma 134 R Race Conditions 30 Recursive Data Pattern 31 Reduktion 30, 90, 122 Rollback 66 Rückgabewerte 44 S scheduler 183 Scheduling 38 Schleifen abbrechen 84 Abhängigkeiten 79, 90 Ausnahmen 88 Ergebnis 81 für PLINQ-Ergebnisse 113 Kosten/Nutzen-Analyse 80 Parallel.For 81 Parallel.ForEach 81 parallele foreach-schleife 81 parallele for-schleife 81 parallelisieren 77 Reduktion 90, 122 Reihenfolge der Aufgaben 79 Schleifenparallelität 76 SIMD 20 SISD 19 Sortieren 53 Bubblesort 53 Einfügesortieren 54 Pivotsortieren (Quicksort) 54 Speedup 23 SpinLock-Struktur 135 Spinning 135 SpinWait-Struktur 137

15 Stichwortverzeichnis 233 SPMD 20 SPMD-Muster 32 Standardtaskplaner 68 Synchronisierung 22 der gleichzeitigen Auflistungen 135 Spinning 135 Zweiphasensynchronisierung 138 T Task Decomposition-Muster 28 Task Parallelism Pattern 31 TaskContinuationOptions-Enumeration 66 TaskCreationOptions-Enumeration 44 AttachedToParent 44, 69 LongRunning 44 PreferFairness 44 TaskFactory-Klasse ContinueWhenAll-Methode 64 ContinueWhenAny-Methode 66 StartNew-Methode 39 Task-Klasse 38 Factory-Eigenschaft 39 Result-Eigenschaft 44 Start-Methode 44 Status-Eigenschaft 47 TaskCreationOptions-Enumeration 44 WaitAll-Methode 41 WaitAny-Methode 41 Wait-Methode 40 Taskplaner 161, 183 benutzerdefinierte 183 Standardtaskplaner 183 Tasks 36 TaskScheduler-Klasse 185 TaskStatus-Enumeration 47 Threadpool 38 Warteschlangen 70 Threads 37 Aufgaben 37 Concurrency Visualizer 214 debuggen 198, 214 Interleaving 20 Kernelmodus 38 Kontextwechsel 21 Overhead 38 Synchronisierung 22 Threadpool 38 Verbindungsthreads 40 Verteilung auf Kerne 217 Work Stealing 71 Threads-Fenster 198 Timeout 43 U Unbehandelte Ausnahmen 47 Unteraufgaben 68 Unterstützende Strukturen-Muster 32 V Verbindungsthreads 40 W Warteschlangen 70 Windows Task-Manager 77 WithDegreeOfParallelism-Klausel 118, 119 WithExecutionMode-Klausel 115 WithMergeOptions-Operator 116 Work Stealing 71 Z Zweiphasensynchronisierung 138

9 Multithreading. 1 Idee des Multithreading

9 Multithreading. 1 Idee des Multithreading 9 Multithreading Jörn Loviscach Versionsstand: 21. Juli 2015, 11:50 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work is licensed

Mehr

Klaus Rohe Developer Platform & Strategy Group Microsoft Deutschland GmbH klrohe@microsoft.com. Programmierung für Multicore CPUs

Klaus Rohe Developer Platform & Strategy Group Microsoft Deutschland GmbH klrohe@microsoft.com. Programmierung für Multicore CPUs Klaus Rohe Developer Platform & Strategy Group Microsoft Deutschland GmbH klrohe@microsoft.com Programmierung für Multicore CPUs Agenda Einleitung Free Lunch is over Multicore- und Multiprozessor-Architekturen

Mehr

Operating System Kernels

Operating System Kernels Operating System Kernels von Patrick Bitterling 1 Themenübersicht -Eine Einleitung über Kernel -Begriffserklärung, Architekturen -Kernel Subsysteme -Prozess-Scheduling, Speichermanagement,... -Der Networking

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 20.11.2013 1 Begrüßung Heute ist Tag der offenen Tür Willkommen allen Schülerinnen und Schülern! 2 Wdhlg.: Attributinformationen in

Mehr

Task Parallel Library. Ralf Abramowitsch Vector Informatik GmbH abramowitsch@lehre.dhbw-stuttgart.de

Task Parallel Library. Ralf Abramowitsch Vector Informatik GmbH abramowitsch@lehre.dhbw-stuttgart.de Task Parallel Library Ralf Abramowitsch Vector Informatik GmbH abramowitsch@lehre.dhbw-stuttgart.de Moore s Gesetz: Alle 2 Jahre verdoppelt sich die Leistung von CPUs Quelle: http://de.wikipedia.org/wiki/mooresches_gesetz

Mehr

Task A Zündung. Task B Einspritzung. Task C Erfassung Pedalwert. J. Schäuffele, Th. Zurawka: Automotive Software Engineering, Vieweg, 2003

Task A Zündung. Task B Einspritzung. Task C Erfassung Pedalwert. J. Schäuffele, Th. Zurawka: Automotive Software Engineering, Vieweg, 2003 Task! evt. parallel zu bearbeitende Ausführungseinheit! Beispiel: Task A Zündung Task B Einspritzung Task C Erfassung Pedalwert Zeit t J. Schäuffele, Th. Zurawka:, Vieweg, 2003 Echtzeitbetriebssysteme

Mehr

Multi-Threading. Ralf Abramowitsch Vector Informatik GmbH abramowitsch@lehre.dhbw-stuttgart.de

Multi-Threading. Ralf Abramowitsch Vector Informatik GmbH abramowitsch@lehre.dhbw-stuttgart.de Multi-Threading Ralf Abramowitsch Vector Informatik GmbH abramowitsch@lehre.dhbw-stuttgart.de Einführung in Threads Threads synchronisieren ThreadPools Thread = unabhängiger Ausführungspfad, der gleichzeitig

Mehr

I Grundlagen der parallelen Programmierung 1

I Grundlagen der parallelen Programmierung 1 vii I Grundlagen der parallelen Programmierung 1 1 Einführung...... 3 1.1 Paradigmenwechsel in der Softwareentwicklung..... 4 1.2 Anwendungsbereiche...... 5 1.3 Parallelität in der Hardware..... 5 1.3.1

Mehr

Implementation of a Framework Component for Processing Tasks within Threads on the Application Level

Implementation of a Framework Component for Processing Tasks within Threads on the Application Level Implementation of a Framework Component for Processing Tasks within Threads on the Application Level Deutsches Krebsforschungszentrum, for Processing Task within Threads on the Application Level Motivation

Mehr

Windows 8. Der Task-Manager. Dieses Dokument kann frei verwendet werden. Keine Lizenzen, kein Copyright. Do what you want with it.

Windows 8. Der Task-Manager. Dieses Dokument kann frei verwendet werden. Keine Lizenzen, kein Copyright. Do what you want with it. Windows 8 Der Task-Manager Ver 0.3 (27.06.2015) Vorbemerkung Hier wird der Task-Manager von Windows 8 beschrieben. Was Ist das? Der Task-Manager zeigt alle laufenden Programme und Dienste in einer Liste

Mehr

C# Programmierung. Eine Einführung in das.net Framework. C# Programmierung - Tag 7: Prozesse und Möglichkeiten

C# Programmierung. Eine Einführung in das.net Framework. C# Programmierung - Tag 7: Prozesse und Möglichkeiten C# Programmierung Eine Einführung in das.net Framework C# Programmierung - Tag 7: Prozesse und Möglichkeiten 1/27/2012 1 Di Process-Class Callbacks DirectX Webservices ASP.NET C# 4 Tasks WP 7 Tag 7 Prozesse

Mehr

Grundlagen der Parallelisierung

Grundlagen der Parallelisierung Grundlagen der Parallelisierung Philipp Kegel, Sergei Gorlatch AG Parallele und Verteilte Systeme Institut für Informatik Westfälische Wilhelms-Universität Münster 3. Juli 2009 Inhaltsverzeichnis 1 Einführung

Mehr

Prozesse und Scheduling

Prozesse und Scheduling Betriebssysteme für Wirtschaftsinformatiker SS04 KLAUSUR Vorbereitung mit Lösungen / Blatt 1 Prozesse und Scheduling Aufgabe 1 : Scheduling Gegeben seien die folgenden Prozesse und die Längen des jeweiligen

Mehr

Systeme 1. Kapitel 5. Scheduling

Systeme 1. Kapitel 5. Scheduling Systeme 1 Kapitel 5 Scheduling Scheduling Verteilung und Zuweisung von begrenzten Ressourcen an konkurrierende Prozesse Beispiel: -> Zeitablaufsteuerung Zwei Prozesse zur gleichen Zeit rechenbereit auf

Mehr

XVSM Application Space

XVSM Application Space XVSM Application Space Concurrency & Coordination Runtime DI Thomas Scheller TU Wien, Institut für Computersprachen A 1040 Wien, Argentinierstrasse 8 / 4.Stock Email: ts@complang.tuwien.ac.at Übersicht

Mehr

NET.Compact Framework

NET.Compact Framework FRANZIS PROFESSIONAL SERIES Robert Panther Programmieren mit dem NET.Compact Framework Pocket PC - Smartphone - Handheld Mit 178 Abbildungen FRANZIS Vorwort 9 Einleitung 11 1.1 Warum dieses Buch? 11 1.2

Mehr

Game Engine Architecture and Development. Platform Unabhängiger Code Multi Threading in Game Engines Profiling

Game Engine Architecture and Development. Platform Unabhängiger Code Multi Threading in Game Engines Profiling Game Engine Architecture and Development Platform Unabhängiger Code Multi Threading in Game Engines Profiling Folien Die Folien werden auf acagamics.de hochgeladen Das Passwort ist 60fps (ohne ) Rückblick:

Mehr

SOLISYON GMBH CHRISTIAN WOLF, BENJAMIN WEISSMAN. Optimierung von Abfragen in MS SQL Server DWH-Umgebungen

SOLISYON GMBH CHRISTIAN WOLF, BENJAMIN WEISSMAN. Optimierung von Abfragen in MS SQL Server DWH-Umgebungen WEITER BLICKEN. MEHR ERKENNEN. BESSER ENTSCHEIDEN. Optimierung von Abfragen in MS SQL Server DWH-Umgebungen SOLISYON GMBH CHRISTIAN WOLF, BENJAMIN WEISSMAN VERSION 1.0 OPTIMIERUNG VON ABFRAGEN IN MS SQL

Mehr

ForEach(IEnumerable source, Action body); Parallel.For(int frominclusive, int toexclusive, Action body)

ForEach<TSource>(IEnumerable<TSource> source, Action<TSource> body); Parallel.For(int frominclusive, int toexclusive, Action<int> body) Parallele Programmierung und Datenfluss mit.net Gleichzeitig zum Erfolg Zur Implementierung von asynchroner und paralleler Verarbeitung bietet.net unterschiedlichste Modelle an. Wer sie kennt, kann seine

Mehr

1 Konzepte der Parallelverarbeitung

1 Konzepte der Parallelverarbeitung Parallelverarbeitung Folie 1-1 1 Konzepte der Parallelverarbeitung Erhöhung der Rechenleistung verbesserte Prozessorarchitekturen mit immer höheren Taktraten Vektorrechner Multiprozessorsysteme (Rechner

Mehr

2 Threads. 2.1 Arbeiten mit Threads. 2.1.1 Erzeugung und Beendigung

2 Threads. 2.1 Arbeiten mit Threads. 2.1.1 Erzeugung und Beendigung 23 2 Threads Threads sind die Grundbausteine paralleler Software und bilden wie in Abschnitt 1.4 bereits erwähnt aus Sicht des Betriebssystems die kleinste Einheit der Parallelität [55]. Im Prinzip werden

Mehr

Die ersten C#- Programme erstellen

Die ersten C#- Programme erstellen Zusatzkapitel zu Kapitel 3: Die ersten C#- Programme erstellen I - Erste Schritte Richtig einsteigen: Programmieren lernen mit Visual C# 2005 Website zum Buch: www.vsxpress.de Auf den folgenden Seiten

Mehr

Thomas Claudius Huber. Asynchrone Programmierung mit C#

Thomas Claudius Huber. Asynchrone Programmierung mit C# Thomas Claudius Huber Asynchrone Programmierung mit C# Thomas Claudius Huber Principal Consultant @ Trivadis AG Trainer, Coach, Developer, Architect www.thomasclaudiushuber.com Spezialisiert auf WPF, XAML,

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

Round-Robin Scheduling (RR)

Round-Robin Scheduling (RR) RR - Scheduling Reigen-Modell: einfachster, ältester, fairster, am weitesten verbreiteter Algorithmus Entworfen für interaktive Systeme (preemptives Scheduling) Idee: Den Prozessen in der Bereitschaftsschlange

Mehr

Technische Informatik II

Technische Informatik II Institut für Technische Informatik und Kommunikationsnetze Technische Informatik II Übung 1: Prozesse und Threads Aufgabe 1: Prozesse und Threads a) Wie verhält sich eine Applikation die aus mehreren Prozessen

Mehr

Teil A Einführung in Microsoft Visual C# und Microsoft Visual Studio 2008 23

Teil A Einführung in Microsoft Visual C# und Microsoft Visual Studio 2008 23 Einleitung 13 Einführung 13 An wen sich dieses Buch richtet 13 Wegweiser für Ein- und Umsteiger 14 Konventionen und Features in diesem Buch 15 Konventionen 15 Weitere Features 16 Systemvoraussetzungen

Mehr

OSEK / OSEKtime Ausgewählte Kapitel eingebetteter Systeme

OSEK / OSEKtime Ausgewählte Kapitel eingebetteter Systeme OSEK / OSEKtime Ausgewählte Kapitel eingebetteter Systeme Wilhelm Haas Wilhelm.Haas@informatik.stud.uni-erlangen.de Friedrich-Alexander-Universität Erlangen-Nürnberg Institut für Informatik Lehrstuhl 4

Mehr

CPU-Scheduling - Grundkonzepte

CPU-Scheduling - Grundkonzepte CPU-Scheduling - Grundkonzepte Sommersemester 2015 Seite 1 Gesamtüberblick 1. Einführung in Computersysteme 2. Entwicklung von Betriebssystemen 3. Architekturansätze 4. Interruptverarbeitung in Betriebssystemen

Mehr

Dämon-Prozesse ( deamon )

Dämon-Prozesse ( deamon ) Prozesse unter UNIX - Prozessarten Interaktive Prozesse Shell-Prozesse arbeiten mit stdin ( Tastatur ) und stdout ( Bildschirm ) Dämon-Prozesse ( deamon ) arbeiten im Hintergrund ohne stdin und stdout

Mehr

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Architektur Verteilter Systeme Teil 2: Prozesse und Threads Architektur Verteilter Systeme Teil 2: Prozesse und Threads 21.10.15 1 Übersicht Prozess Thread Scheduler Time Sharing 2 Begriff Prozess und Thread I Prozess = Sequentiell ablaufendes Programm Thread =

Mehr

RTEMS- Echtzeitbetriebssystem

RTEMS- Echtzeitbetriebssystem RTEMS- Echtzeitbetriebssystem Name: Hussein Hammoud Matrikel- Nr.: 230768 Studiengang: Technische Informatik Fach: Projekt Eingebettete Kommunikation Technische Universität Berlin Sommersemester 2006 RTEMS-

Mehr

COMPUTERKLASSEN MULTICOMPUTER und SPEZIALANWENDUNGSSYSTEME

COMPUTERKLASSEN MULTICOMPUTER und SPEZIALANWENDUNGSSYSTEME D - CA - XIX - CC,M&SPC - 1 HUMBOLDT-UNIVERSITÄT ZU BERLIN INSTITUT FÜR INFORMATIK Vorlesung 19 COMPUTERKLASSEN MULTICOMPUTER und SPEZIALANWENDUNGSSYSTEME Sommersemester 2003 Leitung: Prof. Dr. Miroslaw

Mehr

Intel Threading Building Blocks (TBB)

Intel Threading Building Blocks (TBB) Intel Threading Building Blocks (TBB) Julius Adorf 26.10.2009 Seminar: Semantics of C++ TU München Tejas und Jayhawk? Intel Threading Building Blocks (TBB) Parallelisierung für C++ eine Bibliothek mittlerweile

Mehr

Wir unterscheiden folgende drei Schritte im Design paralleler Algorithmen:

Wir unterscheiden folgende drei Schritte im Design paralleler Algorithmen: 1 Parallele Algorithmen Grundlagen Parallele Algorithmen Grundlagen Wir unterscheiden folgende drei Schritte im Design paralleler Algorithmen: Dekomposition eines Problems in unabhängige Teilaufgaben.

Mehr

Redwood Cronacle und REALTECH theguard! Integration

Redwood Cronacle und REALTECH theguard! Integration Redwood Cronacle und REALTECH theguard! Integration Einleitung Redwood Software und REALTECH haben gemeinsam eine Lösung entwickelt, die die Systemverfügbarkeit von SAP und mysap Systemen signifikant erhöht.

Mehr

Der Scheduler von Windows Konzepte und Strategien

Der Scheduler von Windows Konzepte und Strategien Gliederung Der Scheduler von Windows Konzepte und Strategien Daniel Lohmann 1 Grundbegriffe 2 Eigenschaften des Schedulers Grundlegende Eigenschaften Prioritätenmodell Dynamische Prioritätenanpassungen

Mehr

Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome

Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome (Timo Heinrich, t_hein03@uni-muenster.de) Inhaltsverzeichnis: 0.Einleitung 1.Teil: Helloworldprogramm 1.1 Quellcode: Helloworld.cpp 1.2

Mehr

Begriff: Scheduling Planung, Schedule Plan. Verplanung der CPU-Zeit an die Threads (bzw. Prozesse)

Begriff: Scheduling Planung, Schedule Plan. Verplanung der CPU-Zeit an die Threads (bzw. Prozesse) 5 CPU-Scheduling Im folgenden wird von Threads gesprochen. Bei Systemen, die keine Threads unterstützen, ist der einzige "Thread" eines Prozesses gemeint. Früher wurde dieser Thread synonym mit dem Begriff

Mehr

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant?

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant? Übersicht Aktuelle Themen zu Informatik der Systeme: Nebenläufige Programmierung: Praxis und Semantik Einleitung 1 2 der nebenläufigen Programmierung WS 2011/12 Stand der Folien: 18. Oktober 2011 1 TIDS

Mehr

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum

Mehr

Projekt für Systemprogrammierung WS 06/07

Projekt für Systemprogrammierung WS 06/07 Dienstag 30.01.2007 Projekt für Systemprogrammierung WS 06/07 Von: Hassan Bellamin E-Mail: h_bellamin@web.de Gliederung: 1. Geschichte und Definition 2. Was ist Virtualisierung? 3. Welche Virtualisierungssoftware

Mehr

Inhaltsverzeichnis. Einführung... 17

Inhaltsverzeichnis. Einführung... 17 O:/Wiley/Reihe_Computing/76037/3d/ftoc.3d from 08.02.2013 12:41:41 Inhaltsverzeichnis Einführung... 17 1 Eine kurze Geschichte der Windows-Anwendungsentwicklung... 29 1.1 Das Leben von Windows... 29 1.1.1

Mehr

Approximationsalgorithmen

Approximationsalgorithmen Ausarbeitung zum Thema Approximationsalgorithmen im Rahmen des Fachseminars 24. Juli 2009 Robert Bahmann robert.bahmann@gmail.com FH Wiesbaden Erstellt von: Robert Bahmann Zuletzt berarbeitet von: Robert

Mehr

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume

Mehr

Aufgaben und Lösungshinweise zum Lehrbuch

Aufgaben und Lösungshinweise zum Lehrbuch Aufgaben und Lösungshinweise zum Lehrbuch UVK Verlagsgesellschaft mbh 204 Aufgaben zu Kapitel 4 Aufgabe : (Grundlagen von IT-Services) Nennen Sie vier Kriterien, die für die Gebrauchstauglichkeit eines

Mehr

KV Betriebssysteme (Peter René Dietmüller, Michael Sonntag) Synchronisation

KV Betriebssysteme (Peter René Dietmüller, Michael Sonntag) Synchronisation SS 2003 KV Betriebssysteme (Peter René Dietmüller, Michael Sonntag) Synchronisation 1 Sequentielle Prozesse Zu jedem Zeitpunkt t wird genau eine einzige Instruktion ausgeführt Hängt ab vom Abstraktionsgrad

Mehr

Inhaltsverzeichnis. Vorwort... Danksagung...

Inhaltsverzeichnis. Vorwort... Danksagung... Vorwort... Danksagung... Einführung... Für wen ist dieses Buch konzipiert?... Wie ist dieses Buch aufgebaut?... Microsoft Dynamics CRM Live... Systemanforderungen... Client... Server... Codebeispiele...

Mehr

Die Java Stream API. Funktionale Programmierung mit der Stream API des JDK 1.8. Prof. Dr. Nikolaus Wulff

Die Java Stream API. Funktionale Programmierung mit der Stream API des JDK 1.8. Prof. Dr. Nikolaus Wulff Die Java Stream API Funktionale Programmierung mit der Stream API des JDK 1.8 Prof. Dr. Nikolaus Wulff Funktionale Programmierung Neben der Collection API mit default Methoden ist als weitere Neuerung

Mehr

Parallele Systeme. 1 Einführung 2 1.1 Durchführung der erweiterten Übung... 3 1.2 OpenMP... 3

Parallele Systeme. 1 Einführung 2 1.1 Durchführung der erweiterten Übung... 3 1.2 OpenMP... 3 Lehrstuhl für Informatik 12 Cauerstraße 11 91058 Erlangen TECHNISCHE FAKULTÄT 1. Erweiterte Übung zur Vorlesung Parallele Systeme Inhaltsverzeichnis 1 Einführung 2 1.1 Durchführung der erweiterten Übung..........................

Mehr

UC4 Rapid Automation Handbuch für den Hyper-V Agent

UC4 Rapid Automation Handbuch für den Hyper-V Agent UC4 Rapid Automation Handbuch für den Hyper-V Agent UC4 Software, Inc. UC4: Rapid Automation Handbuch für den Hyper-V Agent Von Jack Ireton Dokumentennummer: RAHV-062011-de *** Copyright UC4 und das UC4-Logo

Mehr

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik Programmieren I Die Programmiersprache Java KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Eigenschaften von Java Java ist eine

Mehr

TIMI: Technische Informatik für Medieninformatiker

TIMI: Technische Informatik für Medieninformatiker TIMI: Technische Informatik für Medieninformatiker Bachelor-Studiengang Digitale Medien Medieninformatik SS 2004 Niels Pollem Arbeitsgruppe Rechnernetze (Prof. Dr.-Ing. Ute Bormann) Scheduling:

Mehr

1 Einführung... 13. 2 Erste Schritte... 19. 3 Programmierkurs... 33. 4 Datentypen... 81. 5 Weiterführende Programmierung... 139

1 Einführung... 13. 2 Erste Schritte... 19. 3 Programmierkurs... 33. 4 Datentypen... 81. 5 Weiterführende Programmierung... 139 Auf einen Blick 1 Einführung... 13 2 Erste Schritte... 19 3 Programmierkurs... 33 4 Datentypen... 81 5 Weiterführende Programmierung... 139 6 Objektorientierte Programmierung... 191 7 Verschiedene Module...

Mehr

Grundlagen der Programmierung 2. Parallele Verarbeitung

Grundlagen der Programmierung 2. Parallele Verarbeitung Grundlagen der Programmierung 2 Parallele Verarbeitung Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 27. Mai 2009 Parallele Algorithmen und Ressourcenbedarf Themen: Nebenläufigkeit,

Mehr

Übung 8: Semaphore in Java (eigene Implementierung)

Übung 8: Semaphore in Java (eigene Implementierung) Übung 8: Semaphore in Java (eigene Implementierung) Ziel der Übung: Diese Übung dient dazu, eine eigene Implementierung einer Semaphore-Klasse in der Programmiersprache Java kennenzulernen. Anschließend

Mehr

Neue Ansätze der Softwarequalitätssicherung

Neue Ansätze der Softwarequalitätssicherung Neue Ansätze der Softwarequalitätssicherung Googles MapReduce-Framework für verteilte Berechnungen am Beispiel von Apache Hadoop Universität Paderborn Fakultät für Elektrotechnik, Informatik und Mathematik

Mehr

Real-Time Operating Systems Ein Überblick

Real-Time Operating Systems Ein Überblick Real-Time Operating Systems Ein Überblick Stefan Tittel Universität Dortmund Proseminar: Werkzeuge und Techniken zur Spezifikation, Simulation und Implementierung von eingebetteten Systemen, 2004 1 Einführung

Mehr

Sowohl RTX64 als auch RTX bieten harten Echtzeitdeterminismus und symmetrische Multiprocessing- Fähigkeiten (SMP).

Sowohl RTX64 als auch RTX bieten harten Echtzeitdeterminismus und symmetrische Multiprocessing- Fähigkeiten (SMP). Produktbeschreibung Februar 2014 RTX RTOS-Plattform Mit der RTX-Echtzeitsoftware von IntervalZero wird aus Microsoft Windows ein Echtzeitbetriebssystem (RTOS). RTX64 von IntervalZero unterstützt 64-Bit-Betriebssysteme

Mehr

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Paradigmen im Algorithmenentwurf Problemlösen Problem definieren Algorithmus entwerfen

Mehr

Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus

Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus Zur Erinnerung: Threads Programmierung (fortgeschrittene Konzepte) Threads, Monitore, Semaphore und speisende en Wolf-Ulrich Raffel (uli@wuraffel.de) Möglichkeiten, Threads zu definieren Bildung einer

Mehr

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54 PHP 5.4 Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012 Grundlagen zur Erstellung dynamischer Webseiten ISBN 978-3-86249-327-2 GPHP54 5 PHP 5.4 - Grundlagen zur Erstellung dynamischer Webseiten

Mehr

Cloud-Task-Parallelisierung in.net: Jenseits der lokalen Prozessor-Power

Cloud-Task-Parallelisierung in.net: Jenseits der lokalen Prozessor-Power Cloud-Task-Parallelisierung in.net: Jenseits der lokalen Prozessor-Power Prof. Dr. Luc Bläser Hochschule für Technik Rapperswil Parallel 2013, Karlsruhe 15. Mai 2013 Stufen der Parallelisierung Multi-core

Mehr

riskkv Scorenalyse riskkv Scoring Seite 1 von 9

riskkv Scorenalyse riskkv Scoring Seite 1 von 9 riskkv Scorenalyse riskkv Scoring Seite 1 von 9 Das Modul dient der flexiblen Erstellung, Auswertung und Verwendung von Scores. Durch vordefinierte Templates können in einer Einklicklösung bspw. versichertenbezogene

Mehr

BICsuite!focus Parallelisierung von Prozessen mit der BICsuite Dynamic Submit Funktion

BICsuite!focus Parallelisierung von Prozessen mit der BICsuite Dynamic Submit Funktion independit Integrative Technologies GmbH Bergstraße 6 D 86529 Schrobenhausen BICsuite!focus Parallelisierung von Prozessen mit der BICsuite Dynamic Submit Funktion Dieter Stubler Ronald Jeninga July 30,

Mehr

Intel Cluster Studio. Michael Burger FG Scientific Computing TU Darmstadt michael.burger@sc.tu-darmstadt.de

Intel Cluster Studio. Michael Burger FG Scientific Computing TU Darmstadt michael.burger@sc.tu-darmstadt.de Intel Cluster Studio Michael Burger FG Scientific Computing TU Darmstadt michael.burger@sc.tu-darmstadt.de 19.03.13 FB Computer Science Scientific Computing Michael Burger 1 / 30 Agenda Was ist das Intel

Mehr

Installationsanweisung für sc_cube unter Windows

Installationsanweisung für sc_cube unter Windows Installationsanweisung für sc_cube unter Windows Thema: Installationsanweisung für sc_cube unter Windows Datum: 17.12.2012 Seitenzahl: 16 Versionsnummer: sc_cube v12.51.1 Autoren: sc synergy GmbH support.sccube@scsynergy.com

Mehr

Ausarbeitung im Rahmen der PG Autolab zum Thema: OSEK 1 -OS. geschrieben von Oliver Botschkowski

Ausarbeitung im Rahmen der PG Autolab zum Thema: OSEK 1 -OS. geschrieben von Oliver Botschkowski Ausarbeitung im Rahmen der PG Autolab zum Thema: OSEK 1 -OS geschrieben von Oliver Botschkowski 1 Offene Systeme und deren Schnittstelle für die Elektronik im Kraftfahrzeug 1 Oliver Botschkowski - OSEK-OS

Mehr

Leistungs- und Geschwindigkeitssteigerung. Dipl.-Ing. Sebastian F. Kleinau Applikationsingenieur

Leistungs- und Geschwindigkeitssteigerung. Dipl.-Ing. Sebastian F. Kleinau Applikationsingenieur Leistungs- und Geschwindigkeitssteigerung von LabVIEW-Projekten Dipl.-Ing. Sebastian F. Kleinau Applikationsingenieur Agenda 1. Einführung 2. Hilfreiche Werkzeuge zur Codeanalyse 3. Benchmarks für LabVIEW-VIs

Mehr

Systeme I: Betriebssysteme Kapitel 7 Scheduling. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 7 Scheduling. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 7 Scheduling Maren Bennewitz Version 23.01.2013 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen

Mehr

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing Fassade Objektbasiertes Strukturmuster C. Restorff & M. Rohlfing Übersicht Motivation Anwendbarkeit Struktur Teilnehmer Interaktion Konsequenz Implementierung Beispiel Bekannte Verwendung Verwandte Muster

Mehr

2010 Ing. Punzenberger COPA-DATA GmbH. Alle Rechte vorbehalten.

2010 Ing. Punzenberger COPA-DATA GmbH. Alle Rechte vorbehalten. 2010 Ing. Punzenberger COPA-DATA GmbH Alle Rechte vorbehalten. Die Weitergabe und Vervielfältigung dieses Dokuments ist - gleich in welcher Art und Weise nur mit schriftlicher Genehmigung der Firma COPA-DATA

Mehr

Windows Presentation Foundation - Crashkurs

Windows Presentation Foundation - Crashkurs Windows Presentation Foundation - Crashkurs von Bernd Marquardt 1. Auflage Windows Presentation Foundation - Crashkurs Marquardt schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG Thematische

Mehr

Asynchrone Programmierung mit Async und Await in C# 5 unter der Lupe

Asynchrone Programmierung mit Async und Await in C# 5 unter der Lupe Asynchrone Programmierung mit Async und Await in C# 5 unter der Lupe Prof. Dr. Luc Bläser Hochschule für Technik Rapperswil Parallel 2013, Karlsruhe 16. Mai 2013 Ausgangslage Async/Await Sprachkonstrukte

Mehr

WCET-Analyseverfahren in der automobilen Softwareentwicklung

WCET-Analyseverfahren in der automobilen Softwareentwicklung WCET-Analyseverfahren in der automobilen Softwareentwicklung Martin Däumler 1 Robert Baumgartl 2 Matthias Werner 1 1 Technische Universität Chemnitz 2 HTW Dresden 28. November 2008 M. Däumler et al (TUC,

Mehr

Hochschule Darmstadt - Fachbereich Informatik - Fachschaft des Fachbereiches

Hochschule Darmstadt - Fachbereich Informatik - Fachschaft des Fachbereiches Hochschule Darmstadt - Fachbereich Informatik - Fachschaft des Fachbereiches Verwendung der bereitgestellten Virtuellen Maschinen»Einrichten einer Virtuellen Maschine mittels VirtualBox sowie Zugriff auf

Mehr

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg. Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 Klausurteilnehmer Name: Matrikelnummer: Wichtige Hinweise Es sind keinerlei Hilfsmittel zugelassen auch keine Taschenrechner! Die Klausur dauert

Mehr

A Kompilieren des Kernels... 247. B Lineare Listen in Linux... 251. C Glossar... 257. Interessante WWW-Adressen... 277. Literaturverzeichnis...

A Kompilieren des Kernels... 247. B Lineare Listen in Linux... 251. C Glossar... 257. Interessante WWW-Adressen... 277. Literaturverzeichnis... 1 Einführung................................................ 1 1.1 Was ist ein Betriebssystem?............................... 1 1.1.1 Betriebssystemkern................................ 2 1.1.2 Systemmodule....................................

Mehr

Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008

Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008 Name: Matrikel-Nr: Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008 Bitte schreiben Sie leserlich und antworten Sie kurz und präzise. 1. Zeichnen Sie das Schichten-Modell eines Computersystems und markieren

Mehr

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum Starthilfe für C# Inhaltsverzeichnis Allgemeines... 2 Bezugsquellen... 2 SharpDevelop... 2.NET Runtime... 2.NET SDK... 2 Installation... 2 Reihenfolge... 2 Vorschlag für eine Ordnerstruktur... 3 Arbeit

Mehr

Visualisierung paralleler bzw. verteilter Programme

Visualisierung paralleler bzw. verteilter Programme Seminar Visualisierung in Informatik und Naturwissenschaften im SS 1999 Visualisierung paralleler bzw. verteilter Programme Holger Dewes Gliederung Zum Begriff Motivation PARADE Beispiel 1: Thread basierte

Mehr

Inhaltsverzeichnis. Vorwort... 15

Inhaltsverzeichnis. Vorwort... 15 Vorwort..................................................... 15 Kapitel 1.NET Framework.................................. 19 1.1 Geschichte................................... 19 1.2 Aufbau des.net Framework..................

Mehr

Betriebssysteme. 4y Springer. Eine kompakte Einführung mit Linux. Albrecht Achilles. Mit 31 Abbildungen

Betriebssysteme. 4y Springer. Eine kompakte Einführung mit Linux. Albrecht Achilles. Mit 31 Abbildungen Albrecht Achilles 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Betriebssysteme Eine kompakte Einführung mit Linux

Mehr

Inhaltsverzeichnis. Einleitung... 11

Inhaltsverzeichnis. Einleitung... 11 Inhaltsverzeichnis Einleitung...................................................... 11 Einführung......................................................... 11 Zielgruppe dieses Buches.............................................

Mehr

Der Task-Manager von Windows 7

Der Task-Manager von Windows 7 Der von Windows 7 Der kann mehr als nur Programme abschießen: Er hilft beim Konfigurieren der Windows-Dienste und beim Lösen von Problemen. Der Windows wird oft nur dazu benutzt, um hängende Anwendungen

Mehr

Rembo/mySHN. Version 2.0 Kurzanleitung. das selbstheilende Netzwerk. Stand: 01.05.2006. my selfhealing network

Rembo/mySHN. Version 2.0 Kurzanleitung. das selbstheilende Netzwerk. Stand: 01.05.2006. my selfhealing network Rembo/mySHN Version 2.0 Kurzanleitung das selbstheilende Netzwerk my selfhealing network Stand: 01.05.2006 Postanschrift: SBE network solutions GmbH Edisonstrasse 21 74076 Heilbronn IV Inhalt Kurzanleitung...i

Mehr

Systemsoftware (SYS) Fakultät für Informatik WS 2008/2009 Christian Baun. Übungsklausur

Systemsoftware (SYS) Fakultät für Informatik WS 2008/2009 Christian Baun. Übungsklausur Hochschule Mannheim Systemsoftware (SYS) Fakultät für Informatik WS 2008/2009 Christian Baun Übungsklausur Aufgabe 1: Definieren Sie den Begriff der Systemsoftware. Nennen Sie die Aufgaben und Komponenten

Mehr

6. Tutorium zu Softwaretechnik I

6. Tutorium zu Softwaretechnik I 6. Tutorium zu Softwaretechnik I Parallelität und Testen Michael Hoff 01.07.2014 INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum

Mehr

(b) Worin besteht der Unterschied zwischen online und offline Scheduling?

(b) Worin besteht der Unterschied zwischen online und offline Scheduling? Universität Paderborn Fachgebiet Rechnernetze SoSe 2013 Konzepte und Methoden der Systemsoftware Präsenzübung 3 2013-05-06 bis 2013-05-10 Aufgabe 1: Scheduling - Grundbegriffe Bekanntlich gibt es für das

Mehr

Vorwort. Danksagung. Teil A Überblick und Setup 1

Vorwort. Danksagung. Teil A Überblick und Setup 1 Vorwort Danksagung Einführung Für wen ist dieses Buch konzipiert? Wie ist dieses Buch aufgebaut? Microsoft Dynamics CRM Live Systemanforderungen Client Server Codebeispiele Zusätzliche Inhalte online finden

Mehr

Tutorial. Tutorial. Microsoft Office 2010 Standard Edition verteilen. 2011 DeskCenter Solutions AG

Tutorial. Tutorial. Microsoft Office 2010 Standard Edition verteilen. 2011 DeskCenter Solutions AG Tutorial Microsoft Office 2010 Standard Edition verteilen 2011 DeskCenter Solutions AG Inhaltsverzeichnis 1. Einführung...3 2. Office 2010 Ressourcen bereitstellen...3 3. Anpassung der Office Installation...4

Mehr

Parallel Computing in.net

Parallel Computing in.net Marc André Zhou Parallel Computing in.net Multicore-Programmierung von.net 2.0 bis 4.0 Marc André Zhou Parallel Computing in.net ISBN: 978-3-86802-072-4 2011 entwickler.press Ein Imprint der Software &

Mehr

Fragestellung: Wie viele CPU Kerne sollte eine VM unter Virtualbox zugewiesen bekommen?

Fragestellung: Wie viele CPU Kerne sollte eine VM unter Virtualbox zugewiesen bekommen? Fragestellung: Wie viele CPU Kerne sollte eine VM unter Virtualbox zugewiesen bekommen? Umgebung Getestet wurde auf einem Linux-System mit voller invis-server Installation, auf dem eine virtuelle Maschine

Mehr

SMC Integrationsserver 5.0 Versionsinformationen

SMC Integrationsserver 5.0 Versionsinformationen SMC Integrationsserver 5.0 Versionsinformationen SMC IT AG Pröllstraße 24 86157 Augsburg Tel. (0821) 720 62-0 Fax. (0821) 720 62-62 smc-it.de info@smc-it.de Geschäftsstelle Ettlingen Pforzheimer Straße

Mehr

Programmiertechnik II

Programmiertechnik II Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen

Mehr

4 Task- und Datenparallelität

4 Task- und Datenparallelität 85 4 Task- und Datenparallelität Die Parallelisierung von Anwendungen mithilfe von Threads ist ein mühsames Unterfangen. Man muss viel Zeit investieren, um ein Programm so zu parallelisieren, dass es die

Mehr

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com

Mehr

Systemprogramme bezeichnen alle Programme, die bestimmte Aufgaben unterstützen, die unabhängig von einer konkreten Anwendung sind

Systemprogramme bezeichnen alle Programme, die bestimmte Aufgaben unterstützen, die unabhängig von einer konkreten Anwendung sind Betriebssysteme Systemprogramme bezeichnen alle Programme, die bestimmte Aufgaben unterstützen, die unabhängig von einer konkreten Anwendung sind Umfaßt z.b. auch Compiler, Interpreter und Dienstprogramme

Mehr