0% fanden dieses Dokument nützlich (0 Abstimmungen)
30 Ansichten92 Seiten

Kommunik Syncro

Hochgeladen von

julionimo008
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
0% fanden dieses Dokument nützlich (0 Abstimmungen)
30 Ansichten92 Seiten

Kommunik Syncro

Hochgeladen von

julionimo008
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen

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

Das könnte Ihnen auch gefallen