
Nebenläufige Programmierung
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Other editions
Additional editions

Person
Content
2 - Inhalt [Seite 8]
3 - 1 Einführung [Seite 14]
4 - 2 Basistechniken [Seite 20]
4.1 - 2.1 Formen der Nebenläufigkeit [Seite 21]
4.1.1 - 2.1.1 Hard- und Software - eine Kurzeinführung [Seite 21]
4.1.1.1 - 2.1.1.1 Computer-Hardware [Seite 21]
4.1.1.2 - 2.1.1.2 Computer-Software [Seite 22]
4.1.2 - 2.1.2 Nebenläufigkeit in Hardware [Seite 23]
4.1.3 - 2.1.3 Nebenläufigkeit in Software [Seite 25]
4.2 - 2.2 Die Rolle des Betriebssystems [Seite 26]
4.2.1 - 2.2.1 Systemarchitekturen [Seite 26]
4.2.1.1 - 2.2.1.1 Aufgaben und Schnittstellen [Seite 26]
4.2.1.2 - 2.2.1.2 Virtualisierung [Seite 29]
4.2.1.3 - 2.2.1.3 Netzdienste und verteilte Systeme [Seite 31]
4.2.2 - 2.2.2 Betriebsarten [Seite 33]
4.2.3 - 2.2.3 Prozesse und Threads [Seite 35]
4.2.3.1 - 2.2.3.1 Prozesse [Seite 35]
4.2.3.2 - 2.2.3.2 Threads [Seite 37]
4.2.3.3 - 2.2.3.3 Der Lebenszyklus [Seite 38]
4.2.4 - 2.2.4 Implementierungsaspekte [Seite 40]
4.2.4.1 - 2.2.4.1 Buchführung [Seite 40]
4.2.4.2 - 2.2.4.3 Scheduling [Seite 41]
4.3 - 2.3 Prozesse und Threads in UNIX/Linux [Seite 43]
4.3.1 - 2.3.1 Kommandos der Benutzerschnittstelle [Seite 43]
4.3.2 - 2.3.2 Grundlegende API-Funktionen für Prozesse [Seite 46]
4.3.2.1 - 2.3.2.1 Die Funktion fork() [Seite 47]
4.3.2.2 - 2.3.2.2 Weitere Funktionen [Seite 49]
4.3.2.3 - 2.3.2.3 Programmbeispiele [Seite 51]
4.3.3 - 2.3.3 Grundlegende API-Funktionen für Threads [Seite 56]
4.3.3.1 - 2.3.3.1 Pthreads: pthread_create(), pthread_exit() [Seite 56]
4.3.3.2 - 2.3.3.2 Pthreads: pthread_join(), pthread_cancel() [Seite 59]
4.3.3.3 - 2.3.3.3 vfork() und clone() [Seite 60]
4.4 - 2.4 Threads in Java [Seite 61]
4.4.1 - 2.4.1 Die Klasse Thread [Seite 61]
4.4.1.1 - 2.4.1.1 run() und start() [Seite 62]
4.4.1.2 - 2.4.1.2 join() [Seite 64]
4.4.1.3 - 2.4.1.3 Weitere Methoden [Seite 65]
4.4.2 - 2.4.2 Grundlegende Programmiertechniken [Seite 65]
4.4.2.1 - 2.4.2.1 Zugriff auf gemeinsame Variablen [Seite 65]
4.4.2.2 - 2.4.2.2 Beenden von Threads [Seite 66]
4.5 - 2.5 Zusammenfassung und Ausblick [Seite 68]
5 - 2A Basistechniken: Aufgaben [Seite 70]
5.1 - 2A.1 Wissens- und Verständnisfragen [Seite 70]
5.2 - 2A.2 Sprachunabhängige Anwendungsaufgaben [Seite 72]
5.3 - 2A.3 Programmierung unter UNIX/Linux [Seite 74]
5.4 - 2A.4 Programmierung in Java [Seite 76]
6 - 3 Synchronisation [Seite 80]
6.1 - 3.1 Synchronisationsbedingungen [Seite 80]
6.1.1 - 3.1.1 Elementare Bedingungen [Seite 80]
6.1.1.1 - 3.1.1.1 Wechselseitiger Ausschluss [Seite 81]
6.1.1.2 - 3.1.1.2 Reihenfolgebedingung [Seite 82]
6.1.2 - 3.1.2 Komplexere Probleme [Seite 83]
6.1.2.1 - 3.1.2.1 Erzeuger-Verbraucher-Problem [Seite 84]
6.1.2.2 - 3.1.2.2 Leser-Schreiber-Problem [Seite 84]
6.1.2.3 - 3.1.2.3 Philosophenproblem [Seite 85]
6.2 - 3.2 Einfache Synchronisationsmechanismen [Seite 85]
6.2.1 - 3.2.1 Grundlegende Eigenschaften [Seite 86]
6.2.2 - 3.2.2 Interruptsperren [Seite 86]
6.2.3 - 3.2.3 Spinlocks [Seite 87]
6.2.4 - 3.2.4 Signale und Events [Seite 91]
6.3 - 3.3 Synchronisation durch Semaphore [Seite 92]
6.3.1 - 3.3.1 Arbeitsprinzip von Semaphoren [Seite 92]
6.3.1.1 - 3.3.1.1 Datenstrukturen und Operationen [Seite 92]
6.3.1.2 - 3.3.1.2 Semaphoroperationen in Bild und Notation [Seite 94]
6.3.1.3 - 3.3.1.3 Varianten und Erweiterungen [Seite 96]
6.3.2 - 3.3.2 Einsatz bei Standardproblemen [Seite 97]
6.3.2.1 - 3.3.2.1 Wechselseitiger Ausschluss [Seite 97]
6.3.2.2 - 3.3.2.2 Reihenfolgebedingung [Seite 98]
6.3.2.3 - 3.3.2.3 Erzeuger-Verbraucher-Problem [Seite 99]
6.3.2.4 - 3.3.2.4 Leser-Schreiber-Problem [Seite 100]
6.3.2.5 - 3.3.2.5 Philosophenproblem [Seite 102]
6.3.3 - 3.3.3 Systematische Lösung von Problemen [Seite 103]
6.3.4 - 3.3.4 Fehlerquellen [Seite 106]
6.3.4.1 - 3.3.4.1 Deadlocks: Problematik [Seite 107]
6.3.4.2 - 3.3.4.2 Deadlocks: Lösungen [Seite 108]
6.3.4.3 - 3.3.4.3 Missachtung der Atomarität [Seite 109]
6.3.4.4 - 3.3.4.4 Einsatz von sleep() [Seite 110]
6.3.4.5 - 3.3.4.5 Mangelnde Fairness [Seite 110]
6.4 - 3.4 Synchronisation durch Monitore [Seite 111]
6.4.1 - 3.4.1 Grundprinzip von Monitoren [Seite 111]
6.4.1.1 - 3.4.1.1 Definition des Monitorbegriffs [Seite 111]
6.4.1.2 - 3.4.1.2 Beispiel: Einfacher Ringpuffer mit Überschreiben [Seite 112]
6.4.2 - 3.4.2 Bedingungsvariablen [Seite 113]
6.4.2.1 - 3.4.2.1 Zweck und Einsatz [Seite 113]
6.4.2.1.1 - 3.4.2.2 Beispiel: Ringpuffer für Erzeuger/Verbraucher [Seite 115]
6.4.2.2 - 3.4.2.2 Beispiel: Ringpuffer für Erzeuger/Verbraucher [Seite 115]
6.4.3 - 3.4.3 Lösung weiterer Standardprobleme [Seite 116]
6.4.3.1 - 3.4.3.1 Reihenfolgebedingung [Seite 116]
6.4.3.2 - 3.4.3.2 Leser-Schreiber-Problem [Seite 117]
6.4.3.3 - 3.4.3.3 Philosophenproblem [Seite 118]
6.5 - 3.5 Mechanismen in UNIX/Linux [Seite 119]
6.5.1 - 3.5.1 Signale [Seite 119]
6.5.2 - 3.5.2 Lock-Dateien [Seite 121]
6.5.3 - 3.5.3 Semaphore [Seite 122]
6.5.3.1 - 3.5.3.1 Erzeugen von Semaphorgruppen [Seite 122]
6.5.3.2 - 3.5.3.2 Initialisieren und Löschen [Seite 124]
6.5.3.3 - 3.5.3.3 P- und V-Operationen [Seite 126]
6.5.3.4 - 3.5.3.4 Programmstrukturen und -beispiele [Seite 128]
6.5.4 - 3.5.4 Mutexe mit Bedingungsvariablen [Seite 133]
6.5.4.1 - 3.5.4.1 Mutexe [Seite 133]
6.5.4.2 - 3.5.4.2 Bedingungsvariablen [Seite 133]
6.5.4.3 - 3.5.4.3 Beispiel: Erzeuger-Verbraucher mit Ringpuffer [Seite 134]
6.6 - 3.6 Mechanismen in Java [Seite 136]
6.6.1 - 3.6.1 Atomare Operationen [Seite 136]
6.6.1.1 - 3.6.1.1 Basistypen [Seite 136]
6.6.1.2 - 3.6.1.2 Collections [Seite 137]
6.6.2 - 3.6.2 Semaphore [Seite 137]
6.6.2.1 - 3.6.2.1 Die Klasse Semaphore [Seite 137]
6.6.2.2 - 3.6.2.2 Beispiel: Reihenfolgebeziehung [Seite 138]
6.6.3 - 3.6.3 Monitore [Seite 139]
6.6.3.1 - 3.6.3.1 synchronized [Seite 139]
6.6.3.2 - 3.6.3.2 wait() und notify() [Seite 141]
6.6.3.3 - 3.6.3.3 Die Interfaces Lock und Condition [Seite 143]
6.6.4 - 3.6.4 Weitere Mechanismen [Seite 144]
6.7 - 3.7 Zusammenfassung und Ausblick [Seite 145]
7 - 3A Synchronisation: Aufgaben [Seite 148]
7.1 - 3A.1 Wissens- und Verständnisfragen [Seite 148]
7.2 - 3A.2 Sprachunabhängige Anwendungsaufgaben [Seite 151]
7.3 - 3A.3 Programmierung unter UNIX/Linux [Seite 156]
7.4 - 3A.4 Programmierung in Java [Seite 159]
8 - 4 Kommunikation [Seite 162]
8.1 - 4.1 Grundlegende Begriffe [Seite 162]
8.1.1 - 4.1.1 Arten der Kommunikation [Seite 162]
8.1.2 - 4.1.2 Sender-Empfänger-Beziehungen [Seite 164]
8.1.2.1 - 4.1.2.1 Ein oder mehrere Sender und Empfänger [Seite 164]
8.1.2.2 - 4.1.2.2 Direkte vs. indirekte Kommunikation [Seite 165]
8.1.2.3 - 4.1.2.3 Enge vs. lose zeitliche Kopplung [Seite 166]
8.1.3 - 4.1.3 Kommunikation in Rechnernetzen [Seite 167]
8.1.3.1 - 4.1.3.1 Schnittstellen: Sockets [Seite 167]
8.1.3.2 - 4.1.3.2 Protokolle und Protokollstacks [Seite 168]
8.1.3.3 - 4.1.3.3 Der Protokollstack des Internets [Seite 170]
8.2 - 4.2 Techniken in UNIX/Linux [Seite 171]
8.2.1 - 4.2.1 Shared Memory [Seite 172]
8.2.1.1 - 4.2.1.1 API-Funktionen [Seite 172]
8.2.1.2 - 4.2.1.2 Programmbeispiel: Erzeuger-Verbraucher-System [Seite 174]
8.2.2 - 4.2.2 Pipes [Seite 175]
8.2.2.1 - 4.2.2.1 Benannte Pipes [Seite 176]
8.2.2.2 - 4.2.2.2 Unbenannte Pipes [Seite 177]
8.2.3 - 4.2.3 Message Queues [Seite 178]
8.2.3.1 - 4.2.3.1 API-Funktionen: Erzeugen und Löschen [Seite 178]
8.2.3.2 - 4.2.3.2 API-Funktionen: Senden und Empfangen [Seite 179]
8.2.3.3 - 4.2.3.3 Programmbeispiel: Erzeuger-Verbraucher-System [Seite 182]
8.2.4 - 4.2.4 Sockets [Seite 183]
8.2.4.1 - 4.2.4.1 Domains und Typen [Seite 183]
8.2.4.2 - 4.2.4.2 API-Funktionen: Übersicht [Seite 184]
8.2.4.3 - 4.2.4.3 API-Funktionen: Erzeugen und Schließen [Seite 186]
8.2.4.4 - 4.2.4.4 API-Funktionen: Verbinden und Kommunizieren [Seite 188]
8.2.4.5 - 4.2.4.5 Programmbeispiel: Stream-Sockets [Seite 189]
8.2.4.6 - 4.2.4.6 Programmbeispiel: Datagram-Sockets [Seite 192]
8.3 - 4.3 Techniken in Java [Seite 194]
8.3.1 - 4.3.1 Übersicht [Seite 194]
8.3.2 - 4.3.2 Piped Streams [Seite 195]
8.3.3 - 4.3.3 Sockets [Seite 197]
8.3.3.1 - 4.3.3.1 Stream-Sockets [Seite 198]
8.3.3.2 - 4.3.3.2 Datagram-Sockets [Seite 201]
8.4 - 4.4 Zusammenfassung und Ausblick [Seite 203]
9 - 4A Kommunikation: Aufgaben [Seite 206]
9.1 - 4A.1 Wissens- und Verständnisfragen [Seite 206]
9.2 - 4A.2 Sprachunabhängige Anwendungsaufgaben [Seite 209]
9.3 - 4A.3 Programmierung unter UNIX/Linux [Seite 210]
9.4 - 4A.4 Programmierung in Java [Seite 214]
10 - 5 Kooperation [Seite 218]
10.1 - 5.1 Modelle und Techniken [Seite 218]
10.1.1 - 5.1.1 Das Client-Server-Modell [Seite 218]
10.1.1.1 - 5.1.1.1 Grundlegende Struktur [Seite 219]
10.1.1.2 - 5.1.1.2 Zeitliche Abläufe [Seite 219]
10.1.1.3 - 5.1.1.3 Implementierungsaspekte [Seite 221]
10.1.2 - 5.1.2 Das Peer-to-Peer-Modell [Seite 222]
10.1.3 - 5.1.3 Programmiertechniken [Seite 223]
10.1.3.1 - 5.1.3.1 Prozedurorientierte Kooperation [Seite 223]
10.1.3.2 - 5.1.3.2 Objektorientierte Kooperation [Seite 225]
10.1.3.3 - 5.1.3.3 Webbasierte Kooperation [Seite 226]
10.2 - 5.2 Techniken in UNIX/Linux [Seite 227]
10.2.1 - 5.2.1 Kooperation über Sockets [Seite 227]
10.2.2 - 5.2.2 Remote Procedure Call (RPC) [Seite 229]
10.2.2.1 - 5.2.2.1 Komponenten und ihr Zusammenspiel [Seite 229]
10.2.2.2 - 5.2.2.2 Schritte der Programmierung [Seite 231]
10.3 - 5.3 Techniken in Java [Seite 235]
10.3.1 - 5.3.1 Remote Method Invocation (RMI) [Seite 235]
10.3.1.1 - 5.3.1.1 Komponenten und ihr Zusammenspiel [Seite 235]
10.3.1.2 - 5.3.1.2 Schritte der Programmierung [Seite 236]
10.3.2 - 5.3.2 Dynamische Webseiten [Seite 239]
10.3.2.1 - 5.3.2.1 Applets [Seite 239]
10.3.2.2 - 5.3.2.2 Servlets und Java Server Pages [Seite 241]
10.3.3 - 5.3.3 Web Services [Seite 242]
10.4 - 5.4 Zusammenfassung [Seite 244]
11 - 5A Kooperation: Aufgaben [Seite 246]
11.1 - 5A.1 Wissens- und Verständnisfragen [Seite 246]
11.2 - 5A.2 Sprachunabhängige Anwendungsaufgaben [Seite 248]
11.3 - 5A.3 Programmierung unter UNIX/Linux [Seite 250]
11.4 - 5A.4 Programmierung in Java [Seite 251]
12 - Literatur und Internet [Seite 254]
12.1 - Internet-Quellen [Seite 255]
13 - Index [Seite 256]
System requirements
File format: PDF
Copy protection: Watermark-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use the free software Adobe Reader, Adobe Digital Editions, or any other PDF viewer of your choice (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or another reading app for eBooks, e.g., PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Watermark-DRM, a „soft” copy protection. This means that there are no technical restrictions to prevent illegal distribution. However, there is a personalised watermark embedded in the eBook that can be used to identify the purchaser of the eBook in the event of misuse and to provide evidence for legal purposes.
For more information, see our eBook Help page.