Sie sind hier
E-Book

Nebenläufige Programmierung

Ein Arbeitsbuch mit UNIX/Linux und Java

AutorCarsten Vogt
VerlagCarl Hanser Fachbuchverlag
Erscheinungsjahr2012
Seitenanzahl266 Seiten
ISBN9783446432017
FormatPDF
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis23,99 EUR
In Computern und verteilten Systemen werden Programme meist nebenläufig, also zur selben Zeit ausgeführt. Dieses Lehr- und Übungsbuch vermittelt die bei der nebenläufigen Programmierung wichtigen Aspekte: Realisierung nebenläufiger Aktivitäten durch Prozesse und Threads, Synchronisation, Kommunikation und Kooperation. Es bietet ein leicht verständliche, praktische Einführung in die Programmierung nebenläufiger Anwendungen. Leserinnen und Leser werden mit der Begriffswelt und den Techniken der Nebenläufigkeit vertraut gemacht und in die Lage versetzt, entsprechende Probleme praktisch zu lösen - sowohl allgemein als auch mit UNIX/Linux-C und mit Java.
Das Buch beschränkt sich bewusst auf die Programmierung nebenläufiger Software mit den Mitteln, die weit verbreitete Sprachen wie C unter UNIX/Linux oder Java bereitstellen. Hardware-Nebenläufigkeit wird daher nur sehr knapp behandelt. In vier Hauptkapiteln werden Begriffe, Techniken, Probleme und Lösungen bei der Erstellung nebenläufiger Programme behandelt. Die Themen werden zunächst unabhängig von einer bestimmten Programmiersprache diskutiert und dann am Beispiel der C-Schnittstelle von UNIX/Linux sowie von Java in die Programmierpraxis umgesetzt. Jedem der Hauptkapitel ist eine umfangreiche Sammlung von Aufgaben zugeordnet, von denen ein Teil unter http://www.fh-koeln.de/nebenlaeufigkeit zu finden ist.

Kaufen Sie hier:

Horizontale Tabs

Blick ins Buch
Inhaltsverzeichnis
Vorwort6
Inhalt8
1 Einführung14
2 Basistechniken20
2.1 Formen der Nebenläufigkeit21
2.1.1 Hard- und Software – eine Kurzeinführung21
2.1.1.1 Computer-Hardware21
2.1.1.2 Computer-Software22
2.1.2 Nebenläufigkeit in Hardware23
2.1.3 Nebenläufigkeit in Software25
2.2 Die Rolle des Betriebssystems26
2.2.1 Systemarchitekturen26
2.2.1.1 Aufgaben und Schnittstellen26
2.2.1.2 Virtualisierung29
2.2.1.3 Netzdienste und verteilte Systeme31
2.2.2 Betriebsarten33
2.2.3 Prozesse und Threads35
2.2.3.1 Prozesse35
2.2.3.2 Threads37
2.2.3.3 Der Lebenszyklus38
2.2.4 Implementierungsaspekte40
2.2.4.1 Buchführung40
2.2.4.3 Scheduling41
2.3 Prozesse und Threads in UNIX/Linux43
2.3.1 Kommandos der Benutzerschnittstelle43
2.3.2 Grundlegende API-Funktionen für Prozesse46
2.3.2.1 Die Funktion fork()47
2.3.2.2 Weitere Funktionen49
2.3.2.3 Programmbeispiele51
2.3.3 Grundlegende API-Funktionen für Threads56
2.3.3.1 Pthreads: pthread_create(), pthread_exit()56
2.3.3.2 Pthreads: pthread_join(), pthread_cancel()59
2.3.3.3 vfork() und clone()60
2.4 Threads in Java61
2.4.1 Die Klasse Thread61
2.4.1.1 run() und start()62
2.4.1.2 join()64
2.4.1.3 Weitere Methoden65
2.4.2 Grundlegende Programmiertechniken65
2.4.2.1 Zugriff auf gemeinsame Variablen65
2.4.2.2 Beenden von Threads66
2.5 Zusammenfassung und Ausblick68
2A Basistechniken: Aufgaben70
2A.1 Wissens- und Verständnisfragen70
2A.2 Sprachunabhängige Anwendungsaufgaben72
2A.3 Programmierung unter UNIX/Linux74
2A.4 Programmierung in Java76
3 Synchronisation80
3.1 Synchronisationsbedingungen80
3.1.1 Elementare Bedingungen80
3.1.1.1 Wechselseitiger Ausschluss81
3.1.1.2 Reihenfolgebedingung82
3.1.2 Komplexere Probleme83
3.1.2.1 Erzeuger-Verbraucher-Problem84
3.1.2.2 Leser-Schreiber-Problem84
3.1.2.3 Philosophenproblem85
3.2 Einfache Synchronisationsmechanismen85
3.2.1 Grundlegende Eigenschaften86
3.2.2 Interruptsperren86
3.2.3 Spinlocks87
3.2.4 Signale und Events91
3.3 Synchronisation durch Semaphore92
3.3.1 Arbeitsprinzip von Semaphoren92
3.3.1.1 Datenstrukturen und Operationen92
3.3.1.2 Semaphoroperationen in Bild und Notation94
3.3.1.3 Varianten und Erweiterungen96
3.3.2 Einsatz bei Standardproblemen97
3.3.2.1 Wechselseitiger Ausschluss97
3.3.2.2 Reihenfolgebedingung98
3.3.2.3 Erzeuger-Verbraucher-Problem99
3.3.2.4 Leser-Schreiber-Problem100
3.3.2.5 Philosophenproblem102
3.3.3 Systematische Lösung von Problemen103
3.3.4 Fehlerquellen106
3.3.4.1 Deadlocks: Problematik107
3.3.4.2 Deadlocks: Lösungen108
3.3.4.3 Missachtung der Atomarität109
3.3.4.4 Einsatz von sleep()110
3.3.4.5 Mangelnde Fairness110
3.4 Synchronisation durch Monitore111
3.4.1 Grundprinzip von Monitoren111
3.4.1.1 Definition des Monitorbegriffs111
3.4.1.2 Beispiel: Einfacher Ringpuffer mit Überschreiben112
3.4.2 Bedingungsvariablen113
3.4.2.1 Zweck und Einsatz113
3.4.2.2 Beispiel: Ringpuffer für Erzeuger/Verbraucher115
3.4.2.2 Beispiel: Ringpuffer für Erzeuger/Verbraucher115
3.4.3 Lösung weiterer Standardprobleme116
3.4.3.1 Reihenfolgebedingung116
3.4.3.2 Leser-Schreiber-Problem117
3.4.3.3 Philosophenproblem118
3.5 Mechanismen in UNIX/Linux119
3.5.1 Signale119
3.5.2 Lock-Dateien121
3.5.3 Semaphore122
3.5.3.1 Erzeugen von Semaphorgruppen122
3.5.3.2 Initialisieren und Löschen124
3.5.3.3 P- und V-Operationen126
3.5.3.4 Programmstrukturen und -beispiele128
3.5.4 Mutexe mit Bedingungsvariablen133
3.5.4.1 Mutexe133
3.5.4.2 Bedingungsvariablen133
3.5.4.3 Beispiel: Erzeuger-Verbraucher mit Ringpuffer134
3.6 Mechanismen in Java136
3.6.1 Atomare Operationen136
3.6.1.1 Basistypen136
3.6.1.2 Collections137
3.6.2 Semaphore137
3.6.2.1 Die Klasse Semaphore137
3.6.2.2 Beispiel: Reihenfolgebeziehung138
3.6.3 Monitore139
3.6.3.1 synchronized139
3.6.3.2 wait() und notify()141
3.6.3.3 Die Interfaces Lock und Condition143
3.6.4 Weitere Mechanismen144
3.7 Zusammenfassung und Ausblick145
3A Synchronisation: Aufgaben148
3A.1 Wissens- und Verständnisfragen148
3A.2 Sprachunabhängige Anwendungsaufgaben151
3A.3 Programmierung unter UNIX/Linux156
3A.4 Programmierung in Java159
4 Kommunikation162
4.1 Grundlegende Begriffe162
4.1.1 Arten der Kommunikation162
4.1.2 Sender-Empfänger-Beziehungen164
4.1.2.1 Ein oder mehrere Sender und Empfänger164
4.1.2.2 Direkte vs. indirekte Kommunikation165
4.1.2.3 Enge vs. lose zeitliche Kopplung166
4.1.3 Kommunikation in Rechnernetzen167
4.1.3.1 Schnittstellen: Sockets167
4.1.3.2 Protokolle und Protokollstacks168
4.1.3.3 Der Protokollstack des Internets170
4.2 Techniken in UNIX/Linux171
4.2.1 Shared Memory172
4.2.1.1 API-Funktionen172
4.2.1.2 Programmbeispiel: Erzeuger-Verbraucher-System174
4.2.2 Pipes175
4.2.2.1 Benannte Pipes176
4.2.2.2 Unbenannte Pipes177
4.2.3 Message Queues178
4.2.3.1 API-Funktionen: Erzeugen und Löschen178
4.2.3.2 API-Funktionen: Senden und Empfangen179
4.2.3.3 Programmbeispiel: Erzeuger-Verbraucher-System182
4.2.4 Sockets183
4.2.4.1 Domains und Typen183
4.2.4.2 API-Funktionen: Übersicht184
4.2.4.3 API-Funktionen: Erzeugen und Schließen186
4.2.4.4 API-Funktionen: Verbinden und Kommunizieren188
4.2.4.5 Programmbeispiel: Stream-Sockets189
4.2.4.6 Programmbeispiel: Datagram-Sockets192
4.3 Techniken in Java194
4.3.1 Übersicht194
4.3.2 Piped Streams195
4.3.3 Sockets197
4.3.3.1 Stream-Sockets198
4.3.3.2 Datagram-Sockets201
4.4 Zusammenfassung und Ausblick203
4A Kommunikation: Aufgaben206
4A.1 Wissens- und Verständnisfragen206
4A.2 Sprachunabhängige Anwendungsaufgaben209
4A.3 Programmierung unter UNIX/Linux210
4A.4 Programmierung in Java214
5 Kooperation218
5.1 Modelle und Techniken218
5.1.1 Das Client-Server-Modell218
5.1.1.1 Grundlegende Struktur219
5.1.1.2 Zeitliche Abläufe219
5.1.1.3 Implementierungsaspekte221
5.1.2 Das Peer-to-Peer-Modell222
5.1.3 Programmiertechniken223
5.1.3.1 Prozedurorientierte Kooperation223
5.1.3.2 Objektorientierte Kooperation225
5.1.3.3 Webbasierte Kooperation226
5.2 Techniken in UNIX/Linux227
5.2.1 Kooperation über Sockets227
5.2.2 Remote Procedure Call (RPC)229
5.2.2.1 Komponenten und ihr Zusammenspiel229
5.2.2.2 Schritte der Programmierung231
5.3 Techniken in Java235
5.3.1 Remote Method Invocation (RMI)235
5.3.1.1 Komponenten und ihr Zusammenspiel235
5.3.1.2 Schritte der Programmierung236
5.3.2 Dynamische Webseiten239
5.3.2.1 Applets239
5.3.2.2 Servlets und Java Server Pages241
5.3.3 Web Services242
5.4 Zusammenfassung244
5A Kooperation: Aufgaben246
5A.1 Wissens- und Verständnisfragen246
5A.2 Sprachunabhängige Anwendungsaufgaben248
5A.3 Programmierung unter UNIX/Linux250
5A.4 Programmierung in Java251
Literatur und Internet254
Internet-Quellen255
Index256

Weitere E-Books zum Thema: Informatik - Algorithmen - Softwaresysteme

Softwaretechnik

E-Book Softwaretechnik
Format: PDF

Software-Projekte geraten oft in Schwierigkeiten: Zeit und Budget werden überschritten; das Projekt tritt auf der Stelle; im schlimmsten Fall wird es ohne Ergebnis abgebrochen. Manche…

Softwaretechnik

E-Book Softwaretechnik
Format: PDF

Software-Projekte geraten oft in Schwierigkeiten: Zeit und Budget werden überschritten; das Projekt tritt auf der Stelle; im schlimmsten Fall wird es ohne Ergebnis abgebrochen. Manche…

Softwaretechnik

E-Book Softwaretechnik
Format: PDF

Software-Projekte geraten oft in Schwierigkeiten: Zeit und Budget werden überschritten; das Projekt tritt auf der Stelle; im schlimmsten Fall wird es ohne Ergebnis abgebrochen. Manche…

Software Engineering

E-Book Software Engineering
Architektur-Design und Prozessorientierung Format: PDF

Das Lehrbuch behandelt alle Aspekte der Software-Entwicklung, besonders aber Methoden und Richtlinien zur Herstellung großer und qualitativ hochwertiger Softwareprodukte. Es vermittelt das zur…

Software Engineering

E-Book Software Engineering
Architektur-Design und Prozessorientierung Format: PDF

Das Lehrbuch behandelt alle Aspekte der Software-Entwicklung, besonders aber Methoden und Richtlinien zur Herstellung großer und qualitativ hochwertiger Softwareprodukte. Es vermittelt das zur…

Weitere Zeitschriften

aufstieg

aufstieg

Zeitschrift der NaturFreunde in Württemberg Die Natur ist unser Lebensraum: Ort für Erholung und Bewegung, zum Erleben und Forschen; sie ist ein schützenswertes Gut. Wir sind aktiv in der Natur ...

care konkret

care konkret

care konkret ist die Wochenzeitung für Entscheider in der Pflege. Ambulant wie stationär. Sie fasst topaktuelle Informationen und Hintergründe aus der Pflegebranche kompakt und kompetent für Sie ...

caritas

caritas

mitteilungen für die Erzdiözese FreiburgUm Kindern aus armen Familien gute Perspektiven für eine eigenständige Lebensführung zu ermöglichen, muss die Kinderarmut in Deutschland nachhaltig ...

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 ...

DER PRAKTIKER

DER PRAKTIKER

Technische Fachzeitschrift aus der Praxis für die Praxis in allen Bereichen des Handwerks und der Industrie. “der praktiker“ ist die Fachzeitschrift für alle Bereiche der fügetechnischen ...

dima

dima

Bau und Einsatz von Werkzeugmaschinen für spangebende und spanlose sowie abtragende und umformende Fertigungsverfahren. dima - die maschine - bietet als Fachzeitschrift die Kommunikationsplattform ...

IT-BUSINESS

IT-BUSINESS

IT-BUSINESS ist seit mehr als 25 Jahren die Fachzeitschrift für den IT-Markt Sie liefert 2-wöchentlich fundiert recherchierte Themen, praxisbezogene Fallstudien, aktuelle Hintergrundberichte aus ...