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

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

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

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

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

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

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

MSDN Webcast: Parallelprogrammierung mit der Task Parallel Library für.net (Teil 1) Presenter: Bernd Marquardt

MSDN Webcast: Parallelprogrammierung mit der Task Parallel Library für.net (Teil 1) Presenter: Bernd Marquardt MSDN Webcast: Parallelprogrammierung mit der Task Parallel Library für.net (Teil 1) Presenter: Bernd Marquardt berndm@go-sky.de www.go-sky.de Die Serie: 5 Teile Teil 1: Einführung, Amdahl s Gesetz, Data

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )

Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden ) Threads Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden ) Ein thread bearbeitet eine sequentielle Teilaufgabe innerhalb eines Prozesses Mehrere nebenläufige

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

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

Ü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

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

(a) Wie unterscheiden sich synchrone und asynchrone Unterbrechungen? (b) In welchen drei Schritten wird auf Unterbrechungen reagiert?

(a) Wie unterscheiden sich synchrone und asynchrone Unterbrechungen? (b) In welchen drei Schritten wird auf Unterbrechungen reagiert? SoSe 2014 Konzepte und Methoden der Systemsoftware Universität Paderborn Fachgebiet Rechnernetze Präsenzübung 2 2014-04-28 bis 2014-05-02 Aufgabe 1: Unterbrechungen (a) Wie unterscheiden sich synchrone

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

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

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

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

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

Windows 7. Grundkurs kompakt. Peter Wies 1. Ausgabe, 2. Aktualisierung, Januar 2012 K-W7-G

Windows 7. Grundkurs kompakt. Peter Wies 1. Ausgabe, 2. Aktualisierung, Januar 2012 K-W7-G Peter Wies 1. Ausgabe, 2. Aktualisierung, Januar 2012 Windows 7 Grundkurs kompakt K-W7-G Inhalt Zu diesem Buch 4 1 Erste Schritte mit Windows 7 7 1.1 Das Betriebssystem Windows 7...8 1.2 Windows starten...8

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

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

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

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

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

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

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

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

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

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

Inhaltsverzeichnis. Einleitung... 11 Für wen ist dieses Buch gedacht?... 12 Beispieldateien... 13 Support... 13 Danksagung... 14

Inhaltsverzeichnis. Einleitung... 11 Für wen ist dieses Buch gedacht?... 12 Beispieldateien... 13 Support... 13 Danksagung... 14 Inhaltsverzeichnis Einleitung................................................................................. 11 Für wen ist dieses Buch gedacht?............................................................

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

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

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

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

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

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

Excel 2013 Makro Workshop. Inhalt

Excel 2013 Makro Workshop. Inhalt Inhalt Vorwort... I So benutzen Sie dieses Buch... II Inhalt... V Zahlen- und Monatsschreibweise... 1 Dezimal- und Tausendertrennzeichen... 1 Währungssymbol und -position... 1 Monatsschreibweise... 1 Makros

Mehr

Microsoft Office 2010

Microsoft Office 2010 Microsoft Office 2010 Office-Anpassungstool Author(s): Paolo Sferrazzo Version: 1.0 Erstellt am: 15.06.12 Letzte Änderung: - 1 / 12 Hinweis: Copyright 2006,. Alle Rechte vorbehalten. Der Inhalt dieses

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

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

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

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

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

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

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

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

Scripting Framework PowerShell Toolkit Quick-Install a Workplace for Packaging and Test

Scripting Framework PowerShell Toolkit Quick-Install a Workplace for Packaging and Test Scripting Framework PowerShell Toolkit Quick-Install a Workplace for Packaging and Test Windows Client Management AG Alte Haslenstrasse 5 CH-9053 Teufen wincm.ch 1 Quick Install - Scripting Framework Workplace...3

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

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

2012 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft Student Partners

2012 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft Student Partners 2012 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft Student Partners Eine typische Windows 8 Anwendung Lässt sich mit Tastatur und Maus bedienen, aber auch mit Touch und Stift Läuft auf x86,

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

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

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

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

CARL HANSER VERLAG. Christopher Allen. Oracle PL/SQL für Einsteiger Der Einsatz von SQL und PL/SQL in der Oracle-Datenbank 3-446-21801-7

CARL HANSER VERLAG. Christopher Allen. Oracle PL/SQL für Einsteiger Der Einsatz von SQL und PL/SQL in der Oracle-Datenbank 3-446-21801-7 CARL HANSER VERLAG Christopher Allen Oracle PL/SQL für Einsteiger Der Einsatz von SQL und PL/SQL in der Oracle-Datenbank 3-446-21801-7 www.hanser.de Inhaltsverzeichnis Danksagung...XI Einleitung...XIII

Mehr

VORSTELLUNG DER DIPLOMARBEIT

VORSTELLUNG DER DIPLOMARBEIT 1 VORSTELLUNG DER DIPLOMARBEIT Thomas Werner Inhaltsverzeichnis 2 Thema Aufgabenstellung Anwendungsdebugging Threads Remote Debugging Implementierung Ausblick Quellen 3 Thema Untersuchung von Funktionsabläufen

Mehr

1. Was ist neu in Project Standard 2010?

1. Was ist neu in Project Standard 2010? Was ist neu? Mit entscheidenden Aktualisierungen und visuellen Erweiterungen bietet Ihnen Microsoft Project 2010 intuitive und vereinfachte Möglichkeiten, um alle Arten von Arbeit effektiv zu planen und

Mehr

Handbuch für Teilnehmer. zur Anwendung. FastViewer

Handbuch für Teilnehmer. zur Anwendung. FastViewer Handbuch für Teilnehmer zur Anwendung FastViewer INHALTSVERZEICHNIS 1. ALLGEMEIN... 3 2. FASTVIEWER STARTEN (BEI WINDOWS BETRIEBSSYSTEM)... 4 2.1. Download Teilnehmermodul... 4 2.2. Verbindung aufbauen...

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

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

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

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

Generalisierung von großen Datenbeständen am Beispiel der Gebäudegeneralisierung mit CHANGE

Generalisierung von großen Datenbeständen am Beispiel der Gebäudegeneralisierung mit CHANGE Institut für Kartographie und Geoinformatik Leibniz Universität Hannover Generalisierung von großen Datenbeständen am Beispiel der Gebäudegeneralisierung mit CHANGE Frank Thiemann, Thomas Globig Frank.Thiemann@ikg.uni-hannover.de

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

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

Domänenmodell: Fadenkommunikation und -synchronisation

Domänenmodell: Fadenkommunikation und -synchronisation Domänenmodell: Fadenkommunikation und -synchronisation Alexander Humphreys, Reinhard Rösch, Fabian Scheler 15. Mai 2003 Inhaltsverzeichnis 1 Domänendefinition 1 2 Domänenlexikon 1 3 Konzeptmodelle 4 4

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

Windows 2003 Server paedml Windows 2.7 für schulische Netzwerke. Update-Anleitung: Patch 2 für paedml Windows 2.7

Windows 2003 Server paedml Windows 2.7 für schulische Netzwerke. Update-Anleitung: Patch 2 für paedml Windows 2.7 Windows 2003 Server paedml Windows 2.7 für schulische Netzwerke Update-Anleitung: Patch 2 für paedml Windows 2.7 Stand: 2.11.2012 Fehler! Kein Text mit angegebener Formatvorlage im Dokument. Impressum

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

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

Dialekte der Klimaforschung

Dialekte der Klimaforschung Dialekte der Klimaforschung Vom Fortran-Programm zum parallelen Programm Thomas Ludwig Inhalt Welche Dialekte werden transformiert? Welche Anforderungen stellen wir? Wozu diese Transformation? Wie ist

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

OTRS::ITSM Service Management Software fü r die TU BAF

OTRS::ITSM Service Management Software fü r die TU BAF OTRS::ITSM Service Management Software fü r die TU BAF Nutzerdokumentation Ersteller: Version: 1.000 Konrad Uhlmann Universitätsrechenzentrum +49 373139 4784 Version Datum Name Details 0.001 25.03.2012

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

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

Schritt 1 - Ein Spielfeld

Schritt 1 - Ein Spielfeld Schritt 1 - Ein Spielfeld Wir beginnen mit zwei einfachen Java-Klassen, dem eigentlichen Spielfeld und dem Applet zum Anzeigen des Spielfeldes (und später der Buttons und der anderen Bedienelemente). Hier

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

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

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