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

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

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

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

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

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

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

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

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

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

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

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

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

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

Microsoft Visual C# 2008

Microsoft Visual C# 2008 John Sharp 13 Microsoft Visual C# 2008 Schritt für Schritt 13 13 14 15 15 16 16 17 17 17 21 22 22 23 25 26 II 40 51 Press 53 54 54 55 55 56 56 57 58 63 63 64 Inhaltsverzeichnis Einleitung 13 Einführung

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

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

Über den Autor 11. Einleitung 23

Über den Autor 11. Einleitung 23 Inhaltsverzeichnis Über den Autor 11 Einleitung 23 Über dieses Buch 23 Törichte Annahmen über den Leser 24 Symbole in diesem Buch 24 Über das Buch hinaus 25 Wie geht es weiter? 25 Teil I Die ersten Schritte

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

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

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

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

Parallelität durch Abstraktion

Parallelität durch Abstraktion Einleitung Zugänge zur Abstraktion Zusammenfassung Seminar - Multicore Programmierung - WS 2010 Fakultät für Informatik und Mathematik Universität Passau 11. November 2010 Einleitung Zugänge zur Abstraktion

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

IT-Infrastruktur, WS 2014/15, Hans-Georg Eßer

IT-Infrastruktur, WS 2014/15, Hans-Georg Eßer ITIS-D'' IT-Infrastruktur WS 2014/15 Hans-Georg Eßer Dipl.-Math., Dipl.-Inform. Foliensatz D'': Rechnerstrukturen, Teil 3 v1.0, 2014/11/27 Folie D''-1 Dieser Foliensatz Vorlesungsübersicht Seminar Wiss.

Mehr

Grundlagen der Verwendung von make

Grundlagen der Verwendung von make Kurzskript zum Thema: Grundlagen der Verwendung von make Stefan Junghans Gregor Gilka 16. November 2012 1 Einleitung In diesem Teilskript sollen die Grundlagen der Verwendung des Programmes make und der

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

Betriebssysteme (BTS)

Betriebssysteme (BTS) 9.Vorlesung Betriebssysteme (BTS) Christian Baun cray@unix-ag.uni-kl.de Hochschule Mannheim Fakultät für Informatik Institut für Betriebssysteme 10.5.2007 Exkursion Die Exkursion wird am Freitag, den 18.5.2007

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

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

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

Gedächtnisprotokoll. Modul: 01727 Parallele Programmierung und Grid Computing Prüfer: Herr Prof. Dr. Keller Datum: 6. April 2011

Gedächtnisprotokoll. Modul: 01727 Parallele Programmierung und Grid Computing Prüfer: Herr Prof. Dr. Keller Datum: 6. April 2011 Gedächtnisprotokoll Modul: 01727 Parallele Programmierung und Grid Computing Prüfer: Herr Prof. Dr. Keller Datum: 6. April 2011 Wozu parallele Programmierung, wenn heutige PCs bereits sehr leistungsstark

Mehr

Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) von einem Rechner abgearbeitet.

Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) von einem Rechner abgearbeitet. Prozessverwaltung Prozesse Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) von einem Rechner abgearbeitet. Prozesse sind Abfolgen von Aktionen, die unter Kontrolle

Mehr

Das in diesem Werk enthaltene Programm-Material ist mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden.

Das in diesem Werk enthaltene Programm-Material ist mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Zusatzmaterial zum Buch "Algorithmen kompakt und verständlich" Das in diesem Werk enthaltene Programm-Material ist mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Der Autor übernimmt

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

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

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper 1. Der Prozess beginnt im Zustand Erzeugt, nachdem sein Vaterprozess den Systemaufruf fork() (s.u.) abgesetzt hat. In diesem Zustand wird der Prozess-Kontext initialisiert. 2. Ist diese Aufbauphase abgeschlossen,

Mehr

Welche der folgenden Aussagen gelten? a) Im allgemeinen gilt: ein Deadlock tritt auf gdw. der Resource-Allocation Graph einen Zykel

Welche der folgenden Aussagen gelten? a) Im allgemeinen gilt: ein Deadlock tritt auf gdw. der Resource-Allocation Graph einen Zykel Aufgabe 1 (5 Punkte) (Multiple Choice) Beantworten Sie folgende Fragen durch Ankreuzen der richtigen Antwort. Für jede falsche Antwort wird ein Punkt abgezogen (es werden minimal 0 Punkte vergeben). Welche

Mehr

Anleitung: Installation von WISO Mein Büro auf einem Mac

Anleitung: Installation von WISO Mein Büro auf einem Mac Anleitung: Installation von WISO Mein Büro auf einem Mac Lieber WISO Mein Büro Anwender, WISO Mein Büro ist bisher eine reine Windows-Anwendung und lässt sich somit leider nicht direkt auf einem Macintosh

Mehr

Parallelverarbeitung mit Ruby

Parallelverarbeitung mit Ruby Fachhochschule Wiesbaden - Fachbereich DCSM Parallelverarbeitung mit Ruby Prozess-Ebene Multithreading 04.12.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 1 Fachhochschule

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

Einführung... 1 Anwendungsszenarien multimedialer Client-Server Systeme... 1 Aufbau des Buches... 2 Die Entwicklung des multimedialen Internets...

Einführung... 1 Anwendungsszenarien multimedialer Client-Server Systeme... 1 Aufbau des Buches... 2 Die Entwicklung des multimedialen Internets... Inhaltsverzeichnis Einführung... 1 Anwendungsszenarien multimedialer Client-Server Systeme...... 1 Aufbau des Buches..... 2 Die Entwicklung des multimedialen Internets..... 4 1 Multimediale Client-Server-Systeme...

Mehr

Hardware-Architekturen

Hardware-Architekturen Kapitel 3 Hardware-Architekturen Hardware-Architekturen Architekturkategorien Mehrprozessorsysteme Begriffsbildungen g Verbindungsnetze Cluster, Constellation, Grid Abgrenzungen Beispiele 1 Fragestellungen

Mehr

Scheduling. Prozess-Ablaufplanung. Prof. Dr. Margarita Esponda Freie Universität Berlin WS 2011/2012

Scheduling. Prozess-Ablaufplanung. Prof. Dr. Margarita Esponda Freie Universität Berlin WS 2011/2012 Scheduling Prozess-Ablaufplanung Prof. Dr. Margarita Esponda Freie Universität Berlin WS 2011/2012 Scheduler Der Scheduler ist ein besonders wichtiges Programmteil jedes Betriebssystems. Prozesse P 1 P

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. Danksagungen... 20. I Überblick... 21

Inhaltsverzeichnis. Danksagungen... 20. I Überblick... 21 Inhaltsverzeichnis Einführung... 15 Wer dieses Buch lesen sollte... 15 Wer dieses Buch nicht lesen sollte... 15 Erforderliche Vorkenntnisse... 15 Aufbau dieses Buchs... 16 Der optimale Einstiegspunkt in

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

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

BLECHCENTER Plus. Installationsanweisung. Hilfe für Anwender

BLECHCENTER Plus. Installationsanweisung. Hilfe für Anwender Hilfe für Anwender IBE Software GmbH; Friedrich-Paffrath-Straße 41; 26389 Wilhelmshaven Fon: 04421-994357; Fax: 04421-994371; www.ibe-software.de; Info@ibe-software.de Vorwort Installationen von Programmen

Mehr

Programmierung von Multicore-Rechnern

Programmierung von Multicore-Rechnern Programmierung von Multicore-Rechnern Prof. Dr.-Ing. habil. Peter Sobe HTW Dresden, Fakultät Informatik/Mathematik www.informatik.htw-dresden.de Gliederung: Ein Blick auf Multicore-Prozessoren/ und -Rechner

Mehr

Programming Models for Cell BE

Programming Models for Cell BE Hauptseminar MAP08 Programming Models for Cell BE Hannes Stadler, Sebastian Graf HannesStadler@gmx.de, sebgr@gmx.net Betreuung: Matthias Hartl, Hritam Dutta, Frank Hannig Hardware-Software-Co-Design Universität

Mehr

Kopieren einer Windows-Installation auf eine andere Platte

Kopieren einer Windows-Installation auf eine andere Platte Kopieren einer Windows-Installation auf eine andere Platte Für kaum einen Vorhaben gibt es so viele Anleitung im Internet, wie das Kopieren einer bestehenden Windows-Installation auf eine andere Festplatte.

Mehr

Einführung in das Microsoft.NET-Framework. Programmiersprache C# MEF Das Managed Extensibility Framework. André Kunz

Einführung in das Microsoft.NET-Framework. Programmiersprache C# MEF Das Managed Extensibility Framework. André Kunz Einführung in das Microsoft.NET-Framework Programmiersprache C# MEF Das Managed Extensibility Framework André Kunz 21.09.2010 1 In dieser Einführung bekommen Sie einen kurzen Einstieg in das.net-framework

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

4.7.1 Intellisense... 42 4.7.2 Code Expansion... 43 4.7.3 Code Snippets... 43 4.7.4 Schriftgröße... 44 4.7.5 Event Handler... 44 4.7.

4.7.1 Intellisense... 42 4.7.2 Code Expansion... 43 4.7.3 Code Snippets... 43 4.7.4 Schriftgröße... 44 4.7.5 Event Handler... 44 4.7. Inhalt 1 Einleitung... 11 1.1 An wen richtet sich das Buch?... 11 1.2 Ziel... 11 1.3 1 = 2... 11 1.4 Voraussetzungen... 11 1.5 Was decken die einzelnen Kapitel ab?... 12 1.6 Was nicht enthalten ist...

Mehr

Andreas Kerl. Inside Windows Installer 4.5

Andreas Kerl. Inside Windows Installer 4.5 Andreas Kerl Inside Windows Installer 4.5 Inhaltsverzeichnis Einleitung 11 Für wen ist dieses Buch gedacht? 12 Beispieldateien 13 Support 13 Danksagung 14 Teil A Allgemeines zum Windows Installer 15 1

Mehr

Übung zu Grundlagen der Betriebssysteme. 7. Übung 27.11.2012

Übung zu Grundlagen der Betriebssysteme. 7. Übung 27.11.2012 Übung zu Grundlagen der Betriebssysteme 7. Übung 27.11.2012 Threads Thread (Faden des (Kontrollflusses)): ist ein sequentieller Abarbeitungsablauf (Kontrollfluss) innerhalb eines Prozesses. Umfasst ein

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

Thorben Meier 25.01.2012

Thorben Meier 25.01.2012 F# Thorben Meier 25.01.2012 1 Einleitung F# ist eine Multi-Paradigmen-Programmiersprache, die neben funktionalen auch imperative und objektorientierte Sprachelemente enthält. Ihre größten Einflüsse kommen

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

B.5 Prozessverwaltung B.5. Prozessverwaltung. 2002 Prof. Dr. Rainer Manthey Informatik II 1

B.5 Prozessverwaltung B.5. Prozessverwaltung. 2002 Prof. Dr. Rainer Manthey Informatik II 1 Prozessverwaltung Prozessverwaltung 2002 Prof. Dr. Rainer Manthey Informatik II 1 Prozesse Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) ) von einem Rechner abgearbeitet.

Mehr

Parallele und funktionale Programmierung Wintersemester 2013/14. 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr

Parallele und funktionale Programmierung Wintersemester 2013/14. 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr Aufgabe 8.1: Zeigerverdopplung Ermitteln Sie an folgendem Beispiel den Rang für jedes Listenelement sequentiell und mit dem in der Vorlesung vorgestellten parallelen

Mehr

UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18

UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18 UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18 Software Testing Automatisiert Manuell 100% 70% 1 Überwiegender Teil der Testing Tools fokusiert auf automatisiertes Testen Microsoft

Mehr

Inhaltsverzeichnis. 2.4 Thread-Systeme. 2.1 Was ist ein Prozess? 2.2 Scheduling. 2.3 Interprozesskommunikation

Inhaltsverzeichnis. 2.4 Thread-Systeme. 2.1 Was ist ein Prozess? 2.2 Scheduling. 2.3 Interprozesskommunikation Inhaltsverzeichnis Systemprogrammierung - Kapitel 2 Prozessverwaltung 1/21 2.1 Was ist ein Prozess? Definition Prozesszustände Prozesskontrollblöcke 2.4 Thread-Systeme Sinn und Zweck Thread-Arten Thread-Management

Mehr

8 Ergänzende Techniken zur Qualitätssicherung

8 Ergänzende Techniken zur Qualitätssicherung 165 8 Ergänzende Techniken zur Qualitätssicherung»Es ist das Wesen meiner Kampfkunst, dass du lernst, am Gegner vor dir auch das kleinste Anzeichen dessen wahrzunehmen, was er beabsichtigt, dass du es

Mehr

CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik)

CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik) Prof. Dr. Th. Letschert CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik) Vorlesung 7 Th Letschert FH Gießen-Friedberg Ressourcen Verwaltung passive Ressourcen aktive Ressourcen

Mehr

Data Mining in der Cloud

Data Mining in der Cloud Data Mining in der Cloud von Jan-Christoph Meier Hamburg, 21.06.2012 1 Ablauf Einführung Verwandte Arbeiten Fazit / Ausblick Literatur 2 Ablauf Einführung Verwandte Arbeiten Fazit / Ausblick Literatur

Mehr

Proseminar Technische Informatik A survey of virtualization technologies

Proseminar Technische Informatik A survey of virtualization technologies Proseminar Technische Informatik A survey of virtualization technologies Referent: Martin Weigelt Proseminar Technische Informatik - A survey of virtualization technologies 1 Übersicht 1. Definition 2.

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

Erste Schritte am Computer

Erste Schritte am Computer Erste Schritte am Computer Impressum PE-ESCOM07 Autorin: Dr. Susanne Weber Inhaltliches Lektorat: Charlotte von Braunschweig 1. Ausgabe vom 14. Juni 2007 HERDT-Verlag, Bodenheim, Germany Internet: www.herdt.com

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

Inhaltsverzeichnis XII

Inhaltsverzeichnis XII 1 Einführung... 1 1.1 Computersysteme... 1 1.1.1 Einführung... 2 1.1.2 Aufgabe von Betriebssystemen... 3 1.1.3 Grundlegende Hardwaremodelle... 3 1.1.4 CPU-Registersatz... 7 1.1.5 Multicore-Prozessoren

Mehr

BP 2 Prozessorvergabe - Multiprozessoren: Kern-Fäden. besten, wenn der Zusatzaufwand für Kontextumschaltungen gering ist.

BP 2 Prozessorvergabe - Multiprozessoren: Kern-Fäden. besten, wenn der Zusatzaufwand für Kontextumschaltungen gering ist. BP 2 Prozessorvergabe - Multiprozessoren: Kern-Fäden 5.2 Prozessorvergabe für Kern-Fäden Scheduler-Struktur Struktur der Warteschlangen Parallele Bearbeitung von Warteschlangen Strategien Statische oder

Mehr

POLAR WEBSYNC FÜR BENUTZER VON POLARGOFIT.COM

POLAR WEBSYNC FÜR BENUTZER VON POLARGOFIT.COM POLAR WEBSYNC FÜR BENUTZER VON POLARGOFIT.COM Mit der Software Polar WebSync 2.2 (oder höher) und dem Datenübertragungsgerät Polar FlowLink können Sie Daten zwischen Ihrem Polar Active Aktivitätscomputer

Mehr

Thomas Theis. Einstieg in Python. Galileo Press

Thomas Theis. Einstieg in Python. Galileo Press Thomas Theis Einstieg in Python Galileo Press 5 Inhalt Inhalt 1 Einführung 17 1.1 Vorteile von Python 17 1.2 Verbreitung von Python 18 1.3 Aufbau des Buchs 18 1.4 Übungen 20 1.5 Installation von Python

Mehr

Willkommen zu TwinCAT 3. Die TwinCAT-3-Philosophie

Willkommen zu TwinCAT 3. Die TwinCAT-3-Philosophie Erste Schritte Willkommen zu TwinCAT 3 Mit TwinCAT 3 beginnt ein neues Zeitalter der PC-basierten Steuerungssoftware und eine neue Etappe in der Firmengeschichte der Beckhoff Automation GmbH. Besonders

Mehr

5. Threads, Serverprozesse und Benachrichtigungen

5. Threads, Serverprozesse und Benachrichtigungen 5. Threads, Serverprozesse und Benachrichtigungen Threads allgemein Threads in Android: Handler und Messages Services: Local, Remote, Binding Benachrichtigungen Entwicklung mobiler Anwendungen Europäische

Mehr

Echtzeitfähige Ereignisgetriebene Scheduling-Strategien

Echtzeitfähige Ereignisgetriebene Scheduling-Strategien Friedrich-Alexander-Universität Erlangen-Nürnberg Ausgewählte Kapitel eingebetteter Systeme Echtzeitfähige Ereignisgetriebene Scheduling-Strategien Sven Kerschbaum 1. Einführung Bei einem eingebetteten

Mehr

Betriebssysteme I WS 2013/2014. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404

Betriebssysteme I WS 2013/2014. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Betriebssysteme I WS 2013/2014 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 16. Januar 2014 Betriebssysteme / verteilte Systeme Betriebssysteme

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

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014 Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung Klaus Kusche, September 2014 Inhalt Ziel & Voraussetzungen Was sind abstrakte Datentypen? Was kann man damit grundsätzlich?

Mehr

^ Springer Vi eweg. Grundkurs Betriebssysteme. Synchronisation, Prozesskommunikation, Virtualisierung. Architekturen, Betriebsmittelverwaltung,

^ Springer Vi eweg. Grundkurs Betriebssysteme. Synchronisation, Prozesskommunikation, Virtualisierung. Architekturen, Betriebsmittelverwaltung, Peter Mandl Grundkurs Betriebssysteme Architekturen, Betriebsmittelverwaltung, Synchronisation, Prozesskommunikation, Virtualisierung 4. Auflage ^ Springer Vi eweg 1 Einführung 1 1.1 Computersysteme 1

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

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

Rapid I/O Toolkit. http://projects.spamt.net/riot. Alexander Bernauer alex@copton.net 08.12.08

Rapid I/O Toolkit. http://projects.spamt.net/riot. Alexander Bernauer alex@copton.net 08.12.08 Rapid I/O Toolkit http://projects.spamt.net/riot Alexander Bernauer alex@copton.net 08.12.08 Inhalt Motivation Architektur Beispiel I/O Features Ausblick Motivation Problemstellung Vorgaben Datenverarbeitung

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

Lehr- und Forschungsgebiet Informatik 2. Proseminar-Arbeit. über das Thema Multithreading und Synchronisation in Java. Jens Bürger

Lehr- und Forschungsgebiet Informatik 2. Proseminar-Arbeit. über das Thema Multithreading und Synchronisation in Java. Jens Bürger Kapitel 1 Einleitung Lehr- und Forschungsgebiet Informatik 2 Proseminar-Arbeit über das Thema Multithreading und Synchronisation in Java Autoren: Betreuerin: Isabel Klöter Jens Bürger Jera Hensel Abgabedatum:

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

opensm2 Enterprise Performance Monitoring Copyright 2010 FUJITSU TECHNOLOGY SOLUTIONS

opensm2 Enterprise Performance Monitoring Copyright 2010 FUJITSU TECHNOLOGY SOLUTIONS opensm2 Enterprise Performance Monitoring Copyright 2010 FUJITSU TECHNOLOGY SOLUTIONS Agenda opensm2 Überblick INSPECTOR ANALYZER 1 opensm2 bietet eine einheitliche Lösung für das unternehmensweite Performance

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

Java Performance Tuning

Java Performance Tuning Seminarunterlage Version: 5.04 Version 5.04 vom 16. Januar 2015 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen

Mehr

B.4. B.4 Betriebssysteme. 2002 Prof. Dr. Rainer Manthey Informatik II 1

B.4. B.4 Betriebssysteme. 2002 Prof. Dr. Rainer Manthey Informatik II 1 Betriebssysteme Betriebssysteme 2002 Prof. Dr. Rainer Manthey Informatik II 1 Bekannte Betriebssysteme Windows 2000 CMS UNIX MS-DOS OS/2 VM/SP BS 2000 MVS Windows NT Solaris Linux 2002 Prof. Dr. Rainer

Mehr

SmartExporter 2013 R1

SmartExporter 2013 R1 Die aktuelle Version wartet mit zahlreichen neuen Features und umfangreichen Erweiterungen auf. So können mit SmartExporter 2013 R1 nun auch archivierte Daten extrahiert und das Herunterladen der Daten

Mehr

Lösungsvorschlag zur 4. Übung

Lösungsvorschlag zur 4. Übung Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 Lösungsvorschlag zur 4. Übung 1 Präsenzübungen 1.1 Schnelltest a) Welche Aussagen zu Bewertungskriterien

Mehr

Programmierung und Angewandte Mathematik

Programmierung und Angewandte Mathematik Programmierung und Angewandte Mathematik Einleitung von Visual Studio C++ SS 2012 Miscrosoft Visual studio C++ Express unterladen 2 weiter Gehen Sie auf die im Rote gekreiste Seite siehe Oben bzw. auf

Mehr

Anleitung: Installation von orgamax auf einem MAC

Anleitung: Installation von orgamax auf einem MAC Anleitung: Installation von orgamax auf einem MAC Lieber orgamax Anwender, orgamax ist eine WIndows-Anwendung und lässt sich somit nicht direkt auf einem Macintosh mit einem MacOS Betriebssystem installieren.

Mehr

Grundkurs Betriebssysteme

Grundkurs Betriebssysteme Grundkurs Betriebssysteme Architekturen, Betriebsmittelverwaltung, Synchronisation, Prozesskommunikation von Peter Mandl 3., akt. und erw. Aufl. 2013 Springer Vieweg Wiesbaden 2012 Verlag C.H. Beck im

Mehr

Oracle 10g und SQL Server 2005 ein Vergleich. Thomas Wächtler 39221

Oracle 10g und SQL Server 2005 ein Vergleich. Thomas Wächtler 39221 Oracle 10g und SQL Server 2005 ein Vergleich Thomas Wächtler 39221 Inhalt 1. Einführung 2. Architektur SQL Server 2005 1. SQLOS 2. Relational Engine 3. Protocol Layer 3. Services 1. Replication 2. Reporting

Mehr

Installationsanleitung MS SQL Server 2005. für Sage 50 Ablage & Auftragsbearbeitung. Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold

Installationsanleitung MS SQL Server 2005. für Sage 50 Ablage & Auftragsbearbeitung. Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold Installationsanleitung MS SQL Server 2005 für Sage 50 Ablage & Auftragsbearbeitung Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold Inhaltsverzeichnis 1. GRUNDSÄTZLICHES... 3 2. SQLExpress Installationsanleitung

Mehr