Kommunikation und Synchronisation von
Prozessen
M. Jakob
Gymnasium Pegnitz
4. September 2019
Inhaltsverzeichnis
1 Topologie von Rechnernetzen
Typen von Rechnernetzen
Topologie des Internets
Rechneradressierung
2 Kommunikation zwischen Prozessen
Dienste, Ports und Protokolle
Umsetzen einer Client-Server-Kommunikation
Protokollstapel und Schichtenmodell
3 Nebenläufige Prozesse
Begriffsbildung
Fehlerbehandlung in Java
Implementierung nebenläufiger Prozesse
Threads synchronisieren
In diesem Abschnitt
1 Topologie von Rechnernetzen
Typen von Rechnernetzen
Topologie des Internets
Rechneradressierung
Topologie von Rechnernetzen Typen von Rechnernetzen
Begriffsbestimmung
Rechnertopologien
In kleinen Teileinheiten können Rechnerverbindungen verschieden
organisiert sein.
Line Bus Vermascht
Ring Stern Vollvermascht
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 4 / 89
Topologie von Rechnernetzen Typen von Rechnernetzen
Begriffsbestimmung
Logische und physikalische Rechnertopologien
Es kommt vor, dass die Kabel auf eine Art (z.B. in Sternform) verlegt
sind, die logische Organisation der Rechner aber anders erfolgt (z.B.
als Bus)
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 5 / 89
Topologie von Rechnernetzen Typen von Rechnernetzen
Übungen
Ü 1.1: Netzwerktopologien
Bereite einen Vortrag vor. Gib die verwendeten Quellen an.
(a) Erörtere die Vor- und Nachteile der verschiedenen Topologien.
(b) Gib jeweils ein Beispiel für den Einsatz der Bus- und
Ringtopologie.
(c) Wie kann man mobile Geräte vernetzen, welche Probleme
entstehen dabei?
åÜ 1.2: Traditionelle Kommunikationswege
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 6 / 89
In diesem Abschnitt
1 Topologie von Rechnernetzen
Typen von Rechnernetzen
Topologie des Internets
Rechneradressierung
Topologie von Rechnernetzen Topologie des Internets
Topologie des Internets
Kombinationstopologie
Um die Vorteile der unterschiedlichen Topologien beim Vernetzen von
mehreren Millionen Rechnern im Internet optimal auszunutzen,
verwendet man eine Kombination der verschiedenen Topologien.
Dabei werden die Teilnetze über Verbindungsrechner (Router)
miteinander verbunden. Die Ausfallsicherheit wird durch alternative
Datenwege sichergestellt.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 8 / 89
Topologie von Rechnernetzen Topologie des Internets
Topologie des Internets
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 9 / 89
In diesem Abschnitt
1 Topologie von Rechnernetzen
Typen von Rechnernetzen
Topologie des Internets
Rechneradressierung
Topologie von Rechnernetzen Rechneradressierung
Adressierung von Rechnern
Adressen
In Netzwerken braucht jeder Rechner einen eindeutigen Bezeichner.
Im Internet werden dazu die sogenannten IP-Adressen (z.B.
[Link]) verwendet, die teilweise dynamisch festgelegt werden.
Wird eine Anfrage z.B. an die Adresse [Link] gestartet, so
erfolgt zunächst eine Namensauflösung durch einen DNS-Rechner
(Domain Name Server) der die Datenpakete über verschiedene
Stationen an die richtige IP-Adresse ([Link]) sendet.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 11 / 89
Topologie von Rechnernetzen Rechneradressierung
Vertiefung und Übung
Simulation Filius
åNetzwerkzeuge bei Heise
å[Link]
åvirtuell Tracen
åFunktion eines DNS
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 12 / 89
In diesem Abschnitt
2 Kommunikation zwischen Prozessen
Dienste, Ports und Protokolle
Umsetzen einer Client-Server-Kommunikation
Protokollstapel und Schichtenmodell
Kommunikation zwischen Prozessen Dienste, Ports und Protokolle
Dienste des Internet
Dienst Aufgabe
E-Mail Versenden und Empfangen von elektronischer Post
FTP Mit dem File Transfer Protokoll werden Dateien über das
Internet ausgetauscht.
VoIP Mit Voice over IP wird ein Dienst zur Telefonie bereitge-
stellt.
WWW Erlaubt die Kommunikation eines Clientrechners unter
Verwendung eines Browsers mit einem Webserver Die-
ser Dienst (World Wide Web) wird oft fälschlicherweise
als „das Internet“ bezeichnet.
...
Internetdienste
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 14 / 89
Kommunikation zwischen Prozessen Dienste, Ports und Protokolle
Ports
Ports
. . . dienen zur Unterscheidung mehrerer Verbindungen zwischen zwei
Rechnern. Ports werden als zusätzliche Nummern realisiert, die
zusätzlich zur IP-Adresse angegeben werden.
vgl. Zimmer in Haus
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 15 / 89
Kommunikation zwischen Prozessen Dienste, Ports und Protokolle
well known port numbers
Port Dienst
20, 21 Dateitransfer (genereller Datentransfer)
25 E-Mail-Versand (smtp)
80 Webserver
110 E-Mail-Abruf (pop, imap)
443 Webserver mit verschlüsseltem Zugang
3306 Zugriff auf MySQL Datenbank (9. Klasse)
well-known-ports
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 16 / 89
Kommunikation zwischen Prozessen Dienste, Ports und Protokolle
Beispiele
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 17 / 89
Kommunikation zwischen Prozessen Dienste, Ports und Protokolle
Protokolle
Protokolle
Alle Aktivitäten im Internet, die mehrere kommunizierende
voneinander entfernte Einheiten betreffen, werden von Protokollen
geregelt. Sie definieren
das Format und
die Reihenfolge der auszutauschenden Nachrichten sowie die
Handlungen, die bei der Übertragung oder dem Empfangen einer
Nachricht (oder eines anderen Ereignisses) unternommen
werden.
Übersicht über das zugrunde liegende Protokoll erhält man über
Sequenz- und Zustandsdiagramme.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 18 / 89
Kommunikation zwischen Prozessen Dienste, Ports und Protokolle
Anwendungsbeispiel: Sequenzdiagramm beim
Einkaufen
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 19 / 89
Kommunikation zwischen Prozessen Dienste, Ports und Protokolle
Anwendungsbeispiel: Protokollzustandsdiagramm
beim Einkaufen
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 20 / 89
Kommunikation zwischen Prozessen Dienste, Ports und Protokolle
Übungen
Ü 2.1: Alltagsprotokolle
(a) Erstelle ein Sequenzdiagramm / ZÜD für den Begrüßungsvorgang
zweier Personen.
(b) Erstelle ein Sequenzdiagramm / ZÜD wenn eine Person die
andere nach der Uhrzeit fragt.
(c) Informiere dich über wichtige Protokolle (im hier gemeinten Sinne)
des englischen Königshauses (Quellen angeben)
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 21 / 89
Kommunikation zwischen Prozessen Dienste, Ports und Protokolle
Zustandsdiagramme — Wiederholung
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 22 / 89
Kommunikation zwischen Prozessen Dienste, Ports und Protokolle
Zustandsdiagramme
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 23 / 89
Kommunikation zwischen Prozessen Dienste, Ports und Protokolle
Zustandsdiagrame in der UnifiedModelling Language
Zustände werden durch abgerundete Rechtecke dargestellt.
Ein Zustandsübergang wird durch ein (Übergangs-)Ereignis
hervorgerufen und durch einen Pfeil dargestellt.
Bei jedem Zustandsübergang kann eine Aktion ausgelöst werden.
Der Zielzustand kann von einer Bedingung abhängen
Jedes Zustandsdiagramm muss genau einen Anfangszustand
haben (Symbol: ).
Endzustände (Symbol: ) darf es beliebig viele geben.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 24 / 89
Kommunikation zwischen Prozessen Dienste, Ports und Protokolle
Sequenzdiagramm: Kommunikation beim E-Mail
senden
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 25 / 89
Kommunikation zwischen Prozessen Dienste, Ports und Protokolle
Wiederholung — Sequenzdiagramme . . .
beschreiben die Kommunikation zwischen Objekten in einer
bestimmten Szene.
Die Zeitachse schreitet im Diagramm von oben nach unten fort.
Gestrichelte senkrechte Linen stellen die Lebenszeit, die Balken
die Aktivitätszeit der Objekte dar.
Durch waagrechte Pfeile werden die ausgetauschen Botschaften
dargestellt. „Initialbotschaften“ erhalten durchgehenden,
Antworten gestrichelte Linien.
Man unterscheidet
synchrone Botschaften Der Sender ist bockiert, bis er eine
Antwort erhält (geschlossener Pfeil)
asynchrone Botschaften Der Sender darf weitere Botschaften
senden (offener Pfeil)
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 26 / 89
Kommunikation zwischen Prozessen Dienste, Ports und Protokolle
Elemente von Sequenzdiagrammen
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 27 / 89
Kommunikation zwischen Prozessen Dienste, Ports und Protokolle
Übungen
Ü 2.2: E-Mail-Protokoll
(a) Erstelle die Sequenzdiagramme für einen gescheiterten
E-Mail-Versand und einen erfolgreichen E-Mail-Empfang.
(b) Erstelle die Zustandsübergangsdiagramme, die den
Handlungsablauf für den Client und den Server beschreiben.
Verwende beim Server nur die Zustände empfangsbereit,
ClientRegistriert und verarbeitend und beim Client nur die
Zustände Start und eingeloggt.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 28 / 89
Kommunikation zwischen Prozessen Dienste, Ports und Protokolle
Übungen
Ü 2.3: Kommunikation im Unterricht
Bearbeite folgende Aufgabe nach dem Muster des Brotkaufens bzw.
Einkaufens.
(a) Erstelle die Protokollzustandsdiagramme für Lehrer (Server) und
Schüler (Clients) für eine typische Unterrichtsstunde die aus
folgenden Elementen besteht: Begrüßung, Abfrage,
Hausaufgabenbesprechung, Stoffvermittlung,
Ausaufgabenerteilung und Verabschiedung.
(b) Erstelle passend zu obigem Protokollzustandsdiagramm eine
Sequenzdiagramm zwischen einem Lehrer J und einem Schüler
X, der nicht abgefragt wird, der aber die Hausaufgabe vortragen
muss.
(c) Informiere dich über die Begriffe IETF und RFC. Welcher
Zusammenhang besteht zu den Protokollen des Internets?
(Quellen angeben) Kommunikation und Synchronisation
M. Jakob (Gymnasium Pegnitz) 4. September 2019 29 / 89
In diesem Abschnitt
2 Kommunikation zwischen Prozessen
Dienste, Ports und Protokolle
Umsetzen einer Client-Server-Kommunikation
Protokollstapel und Schichtenmodell
Kommunikation zwischen Prozessen Umsetzen einer Client-Server-Kommunikation
Umsetzen einer Client-Server-Kommunikation — ZÜD
Serververhalten
Erkunde das Java-Projekt p01_wiegehts
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 31 / 89
Kommunikation zwischen Prozessen Umsetzen einer Client-Server-Kommunikation
Umsetzen einer Client-Server-Kommunikation —
Übung
åÜ 2.4: Client-Server–Kommunikation
åÜ 2.5: Wetterauskunft
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 32 / 89
In diesem Abschnitt
2 Kommunikation zwischen Prozessen
Dienste, Ports und Protokolle
Umsetzen einer Client-Server-Kommunikation
Protokollstapel und Schichtenmodell
Kommunikation zwischen Prozessen Protokollstapel und Schichtenmodell
Protokollstapel und Schichtenmodell
åSchichtenmodell Übersetzer
Das Schichtenmodell. . .
strukturiert aufwendige Arbeitsabläufe, die bei der Kommunikation
zwischen Prozessen auftreten.
Jede Schicht hat ihre spezielle Aufgabe und kommuniziert nur mit der
direkt darüber- oder darunterliegenden Schicht über ein
schichtenspezifisches Protokoll und vorher definierte Schnittstellen.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 34 / 89
Kommunikation zwischen Prozessen Protokollstapel und Schichtenmodell
Aufgaben der Schichten
Ein oder mehrere Schichten können folgende Aufgaben ausführen:
Verbindungsaufbau
Fehlerkontrolle
Flusskontrolle vermeidet Datenflut
Segmentierung und Reassembling ermöglicht Zerlegung von großen
Datenmengen in kleinere Pakete
Multiplexen mehrere höhere Schichten können gleichzeitig eine
einzige Verbindung einer niedrigeren Schicht nutzen
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 35 / 89
Kommunikation zwischen Prozessen Protokollstapel und Schichtenmodell
Chinesisch-Arabischer–Forscherkommunikation
åvgl Abi 2012, IV(3b): Verlinkte Animation als Sequenzdiagramm
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 36 / 89
Kommunikation zwischen Prozessen Protokollstapel und Schichtenmodell
Chinesisch-Arabischer–Forscherkommunikation
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 37 / 89
Kommunikation zwischen Prozessen Protokollstapel und Schichtenmodell
Der TCP/IP-Protokollstapel. . .
ist ein bewährtes Schichtenmodell zur Beschreibung von
Kommunikation innerhalb von Rechnernetzen.
Schicht Aufgabe Protokolle
Anwendung Zusammenarbeit mit Anwen- http, ftp, smtp,
dungsprogrammen pop, telnet
Transport Zuverlässige Übertragung der tcp, udp
Daten
Vermittlung Weiterleitung von Paketen und IPv4, IPv6
Routing
Netzzugang Technik der Datenübertragung Ethernet, Token
Ring, Token Bus
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 38 / 89
Kommunikation zwischen Prozessen Protokollstapel und Schichtenmodell
Das ISO/OSI Referenzmodell. . .
ist ein sehr gut gegliedertes Standardmodell eines Protokollstapels.
OSI-Schicht Orientierung
1 Anwendung
2 Darstellung anwendungsorientiert
3 Sitzung
4 Transport
5 Vermittlung transportorientiert
6 Sicherung
7 Bitübertragung
åISO/OSI auf YouTube
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 39 / 89
Kommunikation zwischen Prozessen Protokollstapel und Schichtenmodell
Zur Veranschaulichung
åSendung mit der Mouse
åIP-Routing
div Filme auf der Mebis-Plattform
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 40 / 89
Kommunikation zwischen Prozessen Protokollstapel und Schichtenmodell
Bemerkung
Das Schichtenmodell
darf nicht starr betrachtet werden. Z.B. kann das SSL/TLS-Protokoll,
das im Zusammenhang mit HTTPS eingesetzt wird und die Sicherheit
von E-Commerce verbessert, im TCP/IP-Modell als Schicht zwischen
der Anwendungs- und der Transportschicht betrachtet werden.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 41 / 89
Kommunikation zwischen Prozessen Protokollstapel und Schichtenmodell
Übungen
Ü 2.6: Schichtenmodell
(a) Erstelle das Schichtenmodell (Vorlage:
[Link]) und das Sequenzdiagramm für
obige Forscherkommunikation, wenn sie sich zusammen mit ihren
Übersetzern in einem Raum befinden.
(b) S. 67/5
(c) åAbi 2012-IV-3 (S. 17, Die deutsche Bundespräsidentin)
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 42 / 89
Kommunikation zwischen Prozessen Protokollstapel und Schichtenmodell
Übungen
Ü 2.7: Schichtenmodell — Analogien
(a) Erörtere die Analogien und Unterschiede zwischen der
Datenübertragung im Internet und den Transport von Angela
Merkel einschließlich Gepäck und Beraterstab vom
Bundeskanzleramt nach Zhongnanhai. (Kurose, Ross, S. 63)
(b) Erörtere die Analogien und Unterschiede zwischen der
Datenübertragung im Internet und den Transport eines Briefes.
(Kurose, Ross, S. 66)
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 43 / 89
Kommunikation zwischen Prozessen Protokollstapel und Schichtenmodell
Übungen
Ü 2.8: Filius Onlinekurs
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 44 / 89
In diesem Abschnitt
3 Nebenläufige Prozesse
Begriffsbildung
Fehlerbehandlung in Java
Implementierung nebenläufiger Prozesse
Threads synchronisieren
Nebenläufige Prozesse Begriffsbildung
Problembeschreibung
Bsp Hausbau
Nebenläufigkeit
Bei großen Projekten (Hausbau, Pizzabacken, . . . ) kann man die
Arbeit effizienter gestalten durch
nebenläufige Prozesse (Threads) d.h. gleichzeitiges bearbeiten
unabhängiger Arbeitsschritte und einer
Synchronisation d.h. Abstimmung von Prozesse die gleiche
Ressourcen nutzen oder aufeinander warten müssen.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 46 / 89
Nebenläufige Prozesse Begriffsbildung
Übung
Ü 3.1: Begriff Nebenläufigkeit
Gib für folgende Aufgaben jeweils 12 Arbeitsschritte an und stelle
grafisch dar, welche Schritte unmittelbar hintereinander oder
nebenläufig stattfinden können. Bei allen drei Situationen muss es
einen Zeitpunkt geben, zu dem mindestens 3 Prozesse parallel
stattfinden können.
(a) Pizzabacken
(b) Autoinspektion
(c) Haus bauen
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 47 / 89
Nebenläufige Prozesse Begriffsbildung
Synchronisationsprobleme
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 48 / 89
Nebenläufige Prozesse Begriffsbildung
Synchronisationsprobleme
Synchronisationsprobleme
Der Abschnitt eines Projektes, bei dem verschiedene Prozesse auf
gemeinsame Ressourcen zugreifen, heißt kritischer Abschitt. Die
Ressource kann oft nur im wechselseitigen Ausschluss genutzt
werden. Ist sie einmal zugeteilt, kann sie nicht mehr entzogen werden
(ununterbrechbare Ressource).
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 48 / 89
Nebenläufige Prozesse Begriffsbildung
Synchronisationsprobleme — Beispiel
Dateibearbeitung
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 49 / 89
Nebenläufige Prozesse Begriffsbildung
Synchronisation durch Semaphore
vgl Buch S. 78
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 50 / 89
Nebenläufige Prozesse Begriffsbildung
Ressourcenzuteilung durch Semaphore
Ressourcenzuteilung durch Semaphore
Beschränkte Ressourcen können sicher mit dem Semaphor-Prinzip
verwaltet werden. Dazu muss auf die Ressource in drei Schritten
zugriffen werden.
1 anfordern,auch testen genannt, und sperren (in einem Schritt)
2 nutzen
3 freigeben
Bemerkung: Die Schritte 1 und 3 können nicht durch eine
Hochsprache erfolgen, sondern müssen durch Maschinenbefehle
umgesetzt werden.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 51 / 89
Nebenläufige Prozesse Begriffsbildung
Vereinfachung durch Monitore
Ein Monitor
ist eine Gruppe von Methoden, die zu einem bestimmten Zeitpunkt
immer nur von einem einzigen Objekt ausgeführt werden darf. Die
anderen Objekte müssen warten.
Intern wird das Monitorkonzept durch Semaphore umgesetzt.
Z.B. können die beiden Methoden lesen und schreiben zu einem
Monitor zusammengefasst werden, so dass immer nur ein Objekt eine
dieser Aktionen ausführen kann.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 52 / 89
Nebenläufige Prozesse Begriffsbildung
Übung
Ü 3.2: Vertiefung Semaphore
Wir nehmen an, das Anfordern und Sperren eines Dateiservers würde
doch in zwei aufeinander folgenden Schritten stattfinden. Zeige durch
eine Sequenzdiagramm wie oben auf der Folie Synchronisation
durch Semaphore, dass es dadurch zu Datenverlust kommen kann.
Ü 3.3: Buch, S. 82/1
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 53 / 89
Nebenläufige Prozesse Begriffsbildung
Verklemmungen
Verklemmungen
Beim gemeinsamen Nutzen von
Ressourcen kann es sein, dass
zwei Prozesse gegenseitig
aufeinander warten und so das
Projekt nicht weiter läuft. Man sagt,
es tritt eine Verklemmung auf.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 54 / 89
Nebenläufige Prozesse Begriffsbildung
Das Philosophenproblem
Philosophenproblem durchspielen
Philosophenproblem
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 55 / 89
Nebenläufige Prozesse Begriffsbildung
Übung
Ü 3.4: Nebenläufigkeit
(a) Erläutere das Philophophenproblem (googeln, App zeigen).
Betrachte åSDPhilosophenProblem
Gib jeweils an, in welchem Zustand sich die Philosophen bei der
gestrichelten Linie (guckst du ) des Sequenzdiagramms befindet.
(b) Betrachte åNebenlaufImAlltag
Erläutere mit Hilfe einer Tabelle bei jeder der dargestellten
Sachsituationen, die Begriffe Nebenläufigkeit, kritischer Abschnitt,
wechselseitiger Ausschluss, ununterbrechbare Ressource,
Deadlock, anfordern, nutzen, freigeben.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 56 / 89
Nebenläufige Prozesse Begriffsbildung
Ü 3.5: Verkehrsberuhigung (Klett S.55/6)
A B
C D
(a) Beschreibe genau, welche Prozesse stattfinden können und
welche Ressourcen gemeinsam bzw. nicht gemeinsam benutzt
werden können.
(b) Synchronisiere die beiden Prozesse, indem du angibst, welche
Positionswechsel (z.B. → A oder A → C ) nebenläufig stattfinden
können und welche nicht. Fertige dazu eine Tabelle an.
(c) Welche Verklemmung kann auftreten, wenn mehrere Autos
beteiligt sind? Wie ließe sie sich verhindern, ohne die
Nebenläufigkeit komplett aufzugeben?
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 57 / 89
Nebenläufige Prozesse Begriffsbildung
Übung Erzeuger-Verbraucher-Problem
åÜ 3.6: EV-Problem
(a) Erforsche obigen Animation (oder andere) zum
Erzeuger-Verbraucher-Problem und beschreibe, was man unter
diesem Problem versteht.
(b) Nenne 10 möglichst unterschiedliche Situationen des Alltags, die
auf dem Erzeuger-Verbraucher-Prinzip basieren. Benenne jeweils
den Erzeuger, den Verbraucher und den Puffer.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 58 / 89
Nebenläufige Prozesse Begriffsbildung
Bedingungen für Deadlocks
Bedingungen für Deadlocks
Folgende vier Bedingungen müssen erfüllt sein, damit Verklemmungen
entsthehen:
1 Benötigte Ressourcen können nur im wechselseitigen Ausschluss
benutzt werden,
2 ein Prozess kann weiter Ressourcen anfordern, auch wenn er
bereits andere angefordert hat,
3 belegte Ressourcen sind ununterbrechbar zugeteilt,
4 mehrere Prozesse warten auf Ressourcen, die von anderen
schon belegt sind.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 59 / 89
Nebenläufige Prozesse Begriffsbildung
Übung
Ü 3.7: Deadlocks auflösen
Weiter oben wurden vier Bedingungen formuliert, damit
Verklemmungen entstehen. Gib für das Philosophenproblem und zwei
weitere Verklemmungssituationen deiner Wahl an, wodurch jede der
vier Bedingungen erfüllt ist, und zeige dass die Verklemmung aufgelöst
werden kann, wenn man diese Bedingung aufgibt.
åVorlage [Link]
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 60 / 89
In diesem Abschnitt
3 Nebenläufige Prozesse
Begriffsbildung
Fehlerbehandlung in Java
Implementierung nebenläufiger Prozesse
Threads synchronisieren
Nebenläufige Prozesse Fehlerbehandlung in Java
Konzept
Bei Programmfehlern unterscheidet man
Syntaxfehler z.B. fehlende Klammern, Tippfehler etc. Sie werden vom
Compiler beim Übersetzen des Quellcodes erkannt.
Laufzeitfehler z.B. Division durch Null, Typenunverträglichkeiten,
Verletzung von Arraygrenzen oder bei Zugriff auf noch
nicht erzeugte Objekte.
Laufzeitfehler
sind schwerwiegende Fehler, die ohne Behandlung zu Abstürzen oder
unerwünschten Programmzuständen führen, sie treten immer erst bei
der Ausführung des Programms auf.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 62 / 89
Nebenläufige Prozesse Fehlerbehandlung in Java
Konzept
Exceptions
Bei Laufzeitfehlern erzeugt Java Objekte der Klasse Exception, die
Informationen über den Laufzeitfehler enthalten.
Dabei ist die Klasse Exception eine Oberklasse von speziellen
Exception wie z.B. der NumberFormatException oder der
ArrayIndexOutOfBoundsException.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 63 / 89
Nebenläufige Prozesse Fehlerbehandlung in Java
Übung
Ü 3.8: Laufzeitfehler
Erzeuge eine Java-Klasse Laufzeitfehler und implementiere dort
Methoden, die folgende Laufzeitfehler erzeugen: Division durch Null,
Unmögliche Typumwandlung von String zu Integer, Zugriff auf eine
Arrayelement außerhalb der Arraygrenzen, Zugriff auf Objekte, die
nicht existieren.
Welche der Laufzeitfehler können mit den herkömmlichen
Programmiermethoden leicht abgefangen werden? Implementiere
diese Möglichkeiten.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 64 / 89
Nebenläufige Prozesse Fehlerbehandlung in Java
Java-Konzept: Excecption-Handling
Exception-Handling
In Java können Laufzeitfehler durch einen
try-catch-[finally]Block abgefangen werden.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 65 / 89
Nebenläufige Prozesse Fehlerbehandlung in Java
ExeptionSynchronisationsprobleme
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 66 / 89
Nebenläufige Prozesse Fehlerbehandlung in Java
try-catch–Syntax
1 try{
2 // Hier können Exceptions auftreten
3 }
4 catch ( Exception e){
5 // Hier werden sie abgearbeitet
6 // Catch ist optional , sofern ein finally -
Block folgt
7 // Es können mehrere catch - Blöcke
hintereinander stehen , um
8 // unterschiedliche Exceptions abzufangen
9 }
10 finally {
11 // Wird immer durchlaufen , ist allerdings
optional
12 }
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 67 / 89
Nebenläufige Prozesse Fehlerbehandlung in Java
Beispiel: Zahlenformat abfangen
1 public class ZahlenformatAbfangen {
2
3 public int stringToIntegerBOOM ( String s){
4 return Integer . parseInt (s);
5 }
6
7 public int stringToInteger ( String s){
8 int z;
9 try{
10 z = Integer . parseInt ( s );
11 return z;
12 }
13 catch ( NumberFormatException e ){
14 System .out. println ( s + " kann man nicht in eine
Zahl konvertieren !");
15 }
16 return -1;
17 }
18 }
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 68 / 89
Nebenläufige Prozesse Fehlerbehandlung in Java
Beispiel: Arraygrenzen abfangen
1 import [Link] .*;
2 public class ArraygrenzenAbfangen {
3 private Object [] liste = {"a", 1, 2.3 , "xyz"};
4
5 public Object gibElementNrBOOM (int nr){
6 return liste [nr ];
7 }
8
9 public Object gibElementNr (int nr){
10 Object o = null;
11 try{
12 o = liste [nr ];
13 }
14 catch ( ArrayIndexOutOfBoundsException e){
15 System .out. println (" Exception thrown :" + e);
16 }
17 finally {
18 System .out. println ("Out of the block ");
19 return o;
20 }
21 }
22 }
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 69 / 89
Nebenläufige Prozesse Fehlerbehandlung in Java
Übung
Ü 3.9: Einfache Exceptions
(a) Implementiere die oben aufgeführten Klassen zum Testen von
Exceptions.
(b) Erweitere die Klasse Laufzeitfehler um vier Methoden, die die
vier Laufzeitfehler mit einer try-catch-Anweisung abfangen. Gib
im catch-Teil auch jeweils die exception mit aus (vergleiche
class ArraygrenzenAbfangen). Verwende auch jedes Mal
sinnvolle finally-Blöcke.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 70 / 89
In diesem Abschnitt
3 Nebenläufige Prozesse
Begriffsbildung
Fehlerbehandlung in Java
Implementierung nebenläufiger Prozesse
Threads synchronisieren
Nebenläufige Prozesse Implementierung nebenläufiger Prozesse
Begriffe Threads und Prozesse
Definition
Moderne Prozessoren können mehrere Programmteile (quasi) parallel
(gleichzeitig) bearbeiten. Man nennt einen solche Programmteile
Prozesse.
Wir unterscheiden
schwergewichtige Prozesse, das sind komplette Programme,
leichtgewichtige Prozesse, sog. Threads, das sind Programmteile,
Nebenläufige Prozesse, das sind parallele Prozesse, die auf
gemeinsame Ressourcen zugreifen und deshalb eine
Synchronisation erfordern.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 72 / 89
Nebenläufige Prozesse Implementierung nebenläufiger Prozesse
Warum Threads?
Threads nutzen die vorhandenen Ressourcen moderner
Betriebssysteme und Hardware effizienter aus. Beispielsweise durch
Weiterführung der Berechnungsopperationen, während andere
Threads auf Ein-/Ausgaben warten.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 73 / 89
Nebenläufige Prozesse Implementierung nebenläufiger Prozesse
Beispiel
åÜ 3.10: Threads erforschen
Erforsche die drei BlueJ(!) Projekte DreiThreadDemo,
JansenZaehlTread, PlusMinusTread und UrlaubsThread. und erkläre
genau, welche Prozesse hier nebenläufig stattfinden und wie man
erkennt, dass wir keinen direkten Einfluss haben, welcher Thread
gerade läuft.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 74 / 89
Nebenläufige Prozesse Implementierung nebenläufiger Prozesse
Allgemeine Form eines eigenen Threads
1 class MeinThread extends Thread {
2 // Nötige Attribute , Konstruktor , etc.
3 public void run ()
4 // Hier beginnt der Thread seine Arbeit
5 { // Arbeitsauftrag des Threads
6 }
7 }
8
9 // Erzeugen und aktivieren des Threads
10 Thread t = new MeinThread ();
11 // Das Objekt wird angelegt
12 t. start (); // Der Thread wird in die Verwaltung
aufgenommen ; sobald er an der Reihe ist , wird
mit Ausführung der Methode run begonnen
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 75 / 89
Nebenläufige Prozesse Implementierung nebenläufiger Prozesse
Zustandsdiagramm der Klasse Thread
Der Zustand eines Threads kann durch verschiedene in der Klasse
Thread implementierte Methoden geändert werden:
S sleep
notify()
new() sleep()
start() Scheduler
new runnable running
stop()
dead
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 76 / 89
Nebenläufige Prozesse Implementierung nebenläufiger Prozesse
Bemerkungen
Die Schnittstelle Runnable ist ein besonderer Zustand. Sie
definiert als einzige Methode run(), die zu Beginn der
Thread-Verarbeitung aufgerufen wird. Das heißt nicht, dass der
Thread gestartet wird.
Ob ein Thread tatsächlich läuft oder nicht entscheidet der
JAVA-interne Scheduler.
Daher sollte die Methode run() niemals direkt aufgerufen werden.
Jeder Thread wird ausschließlich durch die Methode start() dem
Laufzeitsystem als arbeitswillig gemeldet werden.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 77 / 89
Nebenläufige Prozesse Implementierung nebenläufiger Prozesse
Methoden der Klasse Thread
Methode Wirkung
run() Diese Methode wird ausgeführt, wenn der Thread läuft,
darf aber nicht aufgerufen werden, weil das Kommando
über die Thread der Scheduler hat.
start() aktiviert den Thread, so dass er irgendwann durch den
Scheduler gestartet werden kann.
stop() beendet und löscht den Thread.
suspend() unterbricht den Thread und . . .
resume() . . . startet ihn an der gleichen Stelle wieder.
sleep(int x) Der Thread pausiert für mindestens x ms und wird da-
nach vom Scheduler wieder gestartet.
notify() übergibt den Thread an den Scheduler.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 78 / 89
Nebenläufige Prozesse Implementierung nebenläufiger Prozesse
Beispiel: Zähl-Thread
1 public class ZaehlThread extends Thread
2 {
3
4 public void run (){
5 int i = 0;
6 while (i <100) {
7 System .out. println (i++);
8 try{
9 Thread . sleep (100) ;
10 }
11 catch ( InterruptedException e){}
12 }
13 }
14 }
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 79 / 89
Nebenläufige Prozesse Implementierung nebenläufiger Prozesse
Beispiel eines einfachen Threads
In einer zweiten Klasse wird dann ein neuer Thread erzeugt und
gestartet.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 80 / 89
Nebenläufige Prozesse Implementierung nebenläufiger Prozesse
Beispiel eines einfachen Threads
In einer zweiten Klasse wird dann ein neuer Thread erzeugt und
gestartet.
1 public class Demo{
2 ZaehlThread t = new ZaehlThread ();
3
4 public void threadStarten (){
5 [Link] ();
6 try {
7 Thread . sleep (10000) ;
8 } catch ( InterruptedException e) {}
9 [Link] ();
10 }
11 }
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 80 / 89
Nebenläufige Prozesse Implementierung nebenläufiger Prozesse
Beispiel eines einfachen Threads
In einer zweiten Klasse wird dann ein neuer Thread erzeugt und
gestartet.
1 public class Demo{
2 ZaehlThread t = new ZaehlThread ();
3
4 public void threadStarten (){
5 [Link] ();
6 try {
7 Thread . sleep (10000) ;
8 } catch ( InterruptedException e) {}
9 [Link] ();
10 }
11 }
Der eigene Thread t wird gestartet, läuft 10000 ms lang und wird
anschließend gestoppt.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 80 / 89
Nebenläufige Prozesse Implementierung nebenläufiger Prozesse
Übung
Ü 3.11: Erste Treads implementieren
Implementiere eine Fabrikhalle (Vorlage [Link]) von
Robotern wie folgt
Die Roboter sollen unabhängig voneinander arbeiten
Ein Roboter soll die Kugeln abwechseln in die Töpfe
transportieren
Ein zweiter Roboter soll Kugeln einer gewünschten Farbe
aussortieren
Ein dritter Roboter soll alle Kugeln vernichten (Vernichte-Methode
muss in der Robotersteuerung erst implementiert werden)
Ein vierter Roboter soll eine Methode deiner Wahl ausführen
(nicht zu simple Methode verwenden)
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 81 / 89
In diesem Abschnitt
3 Nebenläufige Prozesse
Begriffsbildung
Fehlerbehandlung in Java
Implementierung nebenläufiger Prozesse
Threads synchronisieren
Nebenläufige Prozesse Threads synchronisieren
Monitorkonzept
Beispiel: Schlüssel für Toilette . . .
Monitore. . .
legen Programmabschnitte fest, die zu einem bestimmten Zeitpunkt
immer von nur einem einzigen Prozess ausgeführt werden dürfen.
Anschaulich bekommt ein Thread den einzigen verfügbaren Schlüssel
für die kritischen Bereiche. Die Synchronisierung erfolgt mit dem
Schlüsselwort synchronized und einem beliebigem Schlüsselobjekt.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 83 / 89
Nebenläufige Prozesse Threads synchronisieren
Übung
Ü 3.12: Threads auf Klassenvariable
Öffne (vorher entpacken) das BlueJ(!)-Paket ThreadWert, führe die
main-Methode aus und bearbeite folgende Aufgaben
Erläutere die Funktionsweise
Nenne Auffälligkeiten (was soll das Programm tun, was macht es
eigentlich?)
Was ist/sind die gemeinsamen Ressouce?
Was ist der kritische Bereich?
Synchronisieren die notwendigen Prozesse
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 84 / 89
Nebenläufige Prozesse Threads synchronisieren
Übung
Ü 3.13: Threads auf Objektvariablen
Öffne (vorher entpacken) das BlueJ(!)-Paket ThreadGehalt, führe die
main-Methode aus und bearbeite folgende Aufgaben
Erläutere die Funktionsweise
Nenne Auffälligkeiten (was soll das Programm tun, was macht es
eigentlich?)
Was ist/sind die gemeinsamen Ressouce?
Was ist der kritische Bereich?
Synchronisieren die notwendigen Prozesse
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 85 / 89
Nebenläufige Prozesse Threads synchronisieren
Wiederholung: Erzeuger-Verbraucher–Problem
åÜ 3.14: EV-Problem
Wiederholung: Erzeuger-Verbraucher–Problem
Mehrere Erzeuger
können unabhängig
voneinander Produkte
im Pufferspeicher
ablegen, die bei Bedarf
vom Verbraucher
abgeholt werden.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 86 / 89
Nebenläufige Prozesse Threads synchronisieren
Kritische Abschnitte beim
Erzeuger-Verbraucher–Problem
Kritische Abschnitte beim Erzeuger-Verbraucher–Problem. . .
das Einfügen von Produkten in den Speicher, weil er überlaufen
kann,
das Entnehmen von Produkten aus dem Speicher, weil er leer
sein kann.
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 87 / 89
Nebenläufige Prozesse Threads synchronisieren
Übungen
Ü 3.15: EV-Minimalproblem
åÜ 3.16: Koch und Kellner
M. Jakob (Gymnasium Pegnitz) Kommunikation und Synchronisation 4. September 2019 88 / 89