Sie sind hier
E-Book

Multicore-Software

Grundlagen, Architektur und Implementierung in C/C++, Java und C#

AutorTobias Schüle, Urs Gleim
Verlagdpunkt
Erscheinungsjahr2012
Seitenanzahl370 Seiten
ISBN9783864910807
FormatPDF/ePUB
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis36,90 EUR
Nur parallel arbeitende Software kann die Leistung heutiger Multicore-Prozessoren ausnutzen. Das Buch vermittelt ein solides Grundwissen über Softwareentwicklung im Multicore-Zeitalter und dient als Nachschlagewerk für die tägliche Arbeit. Der erste Teil führt gut lesbar durch alle praxisrelevanten Grundlagen der Programmierung und der Architektur paralleler Software. Mit dem zweiten Teil erhält der Leser einen kompakt und strukturiert aufbereiteten Leitfaden für die produktive Entwicklung in den Sprachen C/C++, Java und C#.

Urs Gleim ist Diplom-Informatiker und war in seiner beruflichen Laufbahn als Entwickler, Software- und Systemarchitekt, Projektleiter und technischer Berater tätig. Heute arbeitet er bei der Siemens Corporate Technology, der zentralen Forschung und Entwicklung von Siemens. Dort leitet er ein Team, das Softwarearchitekturen für Multicore-Systeme entwickelt und existierende Anwendungen parallelisiert. Dr. Tobias Schüle war nach seinem Studium der Informatik mehrere Jahre in Forschung und Lehre auf dem Gebiet des Entwurfs und der Verifikation eingebetteter Systeme tätig. Heute ist er ebenfalls Mitarbeiter bei Siemens Corporate Technology. Sein Hauptinteresse gilt neben parallelen Programmiermodellen der Architektur und Implementierung von Multicore-Software.

Kaufen Sie hier:

Horizontale Tabs

Blick ins Buch
Inhaltsverzeichnis
Vorwort5
Inhaltsverzeichnis5
I Grundlagen der parallelen Programmierung13
1 Einführung16
1.1 Paradigmenwechsel in der Softwareentwicklung17
1.2 Anwendungsbereiche18
1.3 Parallelität in der Hardware18
1.3.1 Prozessorarchitektur19
1.3.2 Multicore-Prozessoren und Multiprozessorsysteme22
1.4 Parallelität in der Software26
1.4.1 Prozesse und Threads26
1.4.2 Virtualisierung30
1.4.3 Parallelisierende Compiler31
1.4.4 Parallele Bibliotheken32
1.4.5 Amdahl'sches Gesetz33
2 Threads36
2.1 Arbeiten mit Threads36
2.1.1 Erzeugung und Beendigung36
2.1.2 Datenaustausch37
2.1.3 Threadpools40
2.2 Scheduling41
2.2.1 Lastverteilung42
2.2.2 Affinitäten und Prioritäten43
2.3 Speicherzugriff43
2.3.1 Speichermodelle44
2.3.2 Speicherhierarchie50
3 Synchronisation54
3.1 Konflikte54
3.1.1 Entstehung55
3.1.2 Kritische Abschnitte56
3.2 Synchronisationsmechanismen58
3.2.1 Mutexe59
3.2.2 Scoped Locking63
3.2.3 Monitore64
3.2.4 Lese-/Schreibsperren65
3.2.5 Semaphore67
3.2.6 Bedingungsvariablen69
3.2.7 Barrieren74
3.2.8 Einmalige Ausführung77
3.2.9 Atomare Operationen79
3.2.10 Spinlocks82
3.3 Fallstricke und Richtlinien84
3.3.1 Konflikterkennung84
3.3.2 Verklemmungen86
3.3.3 Nichtdeterminismus89
3.3.4 Fairness90
3.3.5 Skalierbarkeit91
3.3.6 Threadsicherheit und Wiedereintrittsfähigkeit93
3.3.7 Schnittstellenentwurf94
4 Task- und Datenparallelität98
4.1 Taskparallelität98
4.1.1 Erzeugung und Synchronisation von Tasks100
4.1.2 Parallelisierung rekursiver Algorithmen102
4.1.3 Taskgruppen106
4.1.4 Spekulation108
4.1.5 Implementierung eines Task-Schedulers111
4.1.6 Programmierrichtlinien114
4.2 Datenparallelität115
4.2.1 Schleifen ohne Datenabhängigkeiten116
4.2.2 Reduktionen119
4.2.3 Präfixberechnungen124
4.2.4 Partitionierung und Abbildung128
5 Datenstrukturen140
5.1 Threadsicherer Zugriff140
5.1.1 Grobgranulare Synchronisation142
5.1.2 Feingranulare Synchronisation145
5.1.3 Optimistische Synchronisation147
5.1.4 Nichtblockierende Synchronisation150
5.1.5 Weitere Optimierungen152
5.2 Auswahl der richtigen Datenstruktur152
5.2.1 Kriterien153
5.2.2 Listen156
5.2.3 Vektoren157
5.2.4 Assoziative Felder158
5.2.5 Warteschlangen und Stacks158
5.2.6 Multimengen160
6 Entwurfsmuster162
6.1 Zugriff auf gemeinsame Daten164
6.1.1 Grundlegende Synchronisationsmuster164
6.1.2 Threadlokaler Speicher166
6.1.3 Futures170
6.1.4 Synchronisationsproxy172
6.1.5 Active Object174
6.2 Zerlegung in parallel bearbeitbare Teilprobleme178
6.2.1 Grundlegende Zerlegungsmuster178
6.2.2 Master-Slave180
6.2.3 Erzeuger-Verbraucher182
6.2.4 Aktoren184
6.2.5 Reihenfolgebewahrender Threadpool187
6.3 Fließbandverarbeitung194
6.3.1 Pipelines195
6.3.2 Pipelines mit parallelen Stufen198
6.3.3 Parallele Pipelines199
7 Architektur paralleler Software204
7.1 Entwurf paralleler Algorithmen204
7.2 Entwurf paralleler Architekturen206
II Sprachen und Bibliotheken216
8 Threads und Synchronisation in C/C++218
8.1 POSIX-Threads218
8.1.1 Threads219
8.1.2 Synchronisationsmechanismen221
8.1.3 Threadlokaler Speicher und Speicherallokation223
8.2 Windows-Threads224
8.2.1 Threads224
8.2.2 Synchronisationsmechanismen225
8.2.3 Threadlokaler Speicher und Speicherallokation228
8.2.4 Threadpools228
8.3 C++11229
8.3.1 Lambda-Funktionen229
8.3.2 Threads230
8.3.3 Synchronisationsmechanismen234
8.3.4 Threadlokaler Speicher und Speicherallokation242
8.3.5 Speichermodell242
9 OpenMP244
9.1 Threads246
9.1.1 Parallele Bereiche246
9.1.2 Arbeitsteilung247
9.1.3 Speicherzugriff248
9.1.4 Threadlokaler Speicher249
9.2 Synchronisationsmechanismen250
9.2.1 Kritische Abschnitte250
9.2.2 Mutexe251
9.2.3 Barrieren251
9.2.4 Einmalige Ausführung252
9.2.5 Atomare Operationen253
9.3 Taskparallelität253
9.3.1 Parallelisierung rekursiver Algorithmen254
9.3.2 Variablenzugriff254
9.3.3 Suspendierung256
9.4 Datenparallelität257
9.4.1 Schleifen ohne Datenabhängigkeiten257
9.4.2 Reduktionen260
9.4.3 Partitionierung und Abbildung262
9.5 Speichermodell263
10 Threading Building Blocks266
10.1 Synchronisationsmechanismen268
10.1.1 Sperren268
10.1.2 Atomare Operationen271
10.2 Taskparallelität272
10.2.1 Parallele Funktionsaufrufe272
10.2.2 Taskgruppen273
10.2.3 Task Scheduler274
10.3 Datenparallelität274
10.3.1 Schleifen ohne Datenabhängigkeiten275
10.3.2 Reduktionen280
10.3.3 Präfixberechnungen282
10.4 Datenstrukturen283
10.4.1 Assoziative Felder und Mengen284
10.4.2 Warteschlangen287
10.4.3 Vektoren288
10.5 Algorithmen und Entwurfsmuster289
10.5.1 Sortieren290
10.5.2 Fließbandverarbeitung290
10.5.3 Flussgraphen292
10.6 Threadlokaler Speicher295
10.7 Speicherallokation296
10.8 Ausnahmen und Abbruch297
11 Parallele Programmierung mit Java300
11.1 Threads301
11.1.1 Threaderzeugung301
11.1.2 Threadpools302
11.1.3 Threadlokaler Speicher304
11.2 Synchronisationsmechanismen305
11.2.1 Sperren305
11.2.2 Spezielle Synchronisationsmechanismen309
11.2.3 Atomare Operationen311
11.3 Taskparallelität312
11.3.1 Tasks und Futures312
11.3.2 Starten von Tasks313
11.3.3 Rekursive Tasks314
11.3.4 Blockierende Operationen in Tasks316
11.4 Datenparallelität316
11.5 Datenstrukturen317
11.6 Speichermodell318
12 Parallele Programmierung mit .NET322
12.1 Threads322
12.1.1 Threaderzeugung322
12.1.2 Threadpools324
12.1.3 Threadlokaler Speicher326
12.2 Synchronisationsmechanismen327
12.2.1 Sperren327
12.2.2 Spezielle Synchronisationsmechanismen332
12.2.3 Atomare Operationen332
12.2.4 Einmalige Ausführung333
12.3 Taskparallelität334
12.3.1 Tasks und Futures335
12.3.2 Fortsetzungstasks337
12.4 Datenparallelität339
12.4.1 Schleifen ohne Datenabhängigkeiten339
12.4.2 Parallele Aggregation341
12.4.3 PLINQ343
12.5 Datenstrukturen344
12.6 Ausnahmen und Abbruch345
12.7 Speichermodell346
13 Blick über den Tellerrand350
13.1 Funktionale Sprachen351
13.2 Aktorbasierte Programmierung353
13.3 Transaktionsbasierter Speicher355
Literaturverzeichnis360
Index364

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

Programmieren lernen in PHP 5

E-Book Programmieren lernen in PHP 5
Format: PDF

Mit der Version 5 erreicht PHP einen bemerkenswerten Reifegrad, der PHP zu einer festen Größe in der Welt der Webprogrammierung macht. Gerade die leichte Erlernbarkeit macht PHP zur idealen…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Weitere Zeitschriften

Menschen. Inklusiv leben

Menschen. Inklusiv leben

MENSCHEN. das magazin informiert über Themen, die das Zusammenleben von Menschen in der Gesellschaft bestimmen -und dies konsequent aus Perspektive der Betroffenen. Die Menschen, um die es geht, ...

FREIE WERKSTATT

FREIE WERKSTATT

Die Fachzeitschrift FREIE WERKSTATT berichtet seit der ersten Ausgaben 1994 über die Entwicklungen des Independent Aftermarkets (IAM). Hauptzielgruppe sind Inhaberinnen und Inhaber, Kfz-Meisterinnen ...

BMW Magazin

BMW Magazin

Unter dem Motto „DRIVEN" steht das BMW Magazin für Antrieb, Leidenschaft und Energie − und die Haltung, im Leben niemals stehen zu bleiben.Das Kundenmagazin der BMW AG inszeniert die neuesten ...

Card Forum International

Card Forum International

Card Forum International, Magazine for Card Technologies and Applications, is a leading source for information in the field of card-based payment systems, related technologies, and required reading ...

küche + raum

küche + raum

Internationale Fachzeitschrift für Küchenforschung und Küchenplanung. Mit Fachinformationen für Küchenfachhändler, -spezialisten und -planer in Küchenstudios, Möbelfachgeschäften und den ...