• Keine Ergebnisse gefunden

Einleitung Nebenl¨aufigenProgrammierung

N/A
N/A
Protected

Academic year: 2021

Aktie "Einleitung Nebenl¨aufigenProgrammierung"

Copied!
39
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Prinzipien, Modelle und Algorithmen der

Nebenl¨ aufigen Programmierung

Wintersemester 2019/20

Einleitung

Prof. Dr. David Sabel

LFE Theoretische Informatik

(2)

Ubersicht ¨

1

Warum nebenl¨ aufige Programmierung?

2

Begriffe der nebenl¨ aufigen Programmierung

(3)

Warum ist

Nebenl¨ aufige Programmierung interessant?

Unterschied: sequentiell – nebenl¨ aufig Anwendungsbereiche nebenl¨ aufiger Programmierung

Schwierigkeiten bei nebenl¨ aufiger Programmierung

(4)

Sequentielle und nebenl¨ aufige Programmierung

Sequentielle Programme:

Folge von (Maschinen-)Befehlen

Befehle werden nacheinander ausgef¨ uhrt

Jeder Befehl ¨ andert Hauptspeicher, Register, etc.

Ausf¨ uhrung deterministisch

(5)

Sequentielle und nebenl¨ aufige Programmierung (2)

Nebenl¨ aufige (parallele) Programme:

Mehrere Befehle werden gleichzeitig durchgef¨ uhrt.

gleichzeitig kann auch quasi-parallel bedeuten, d.h. in Realit¨ at sequentiell

Ausf¨ uhrung i.a. nichtdeterministisch

formalere Definition: sp¨ ater

(6)

Reale Systeme sind fast nie rein sequentiell

Beispiel Betriebssysteme:

aus Benutzersicht: verschiedene Aufgaben werden gleichzeitig durchgef¨ uhrt

z.B. Drucken, Surfen, Mausbewegen, Musik h¨ oren (alles gleichzeitig)

Umsetzung: ohne nebenl¨ aufige Programmierung undenkbar

(7)

Reale Systeme fast nie rein sequentiell (2)

Beispiel Web-Programming:

Client-Server Modell: Client fordert Dienst beim Server an z.B. WWW-Server: Client fordert Webseite an

Notwendig: Server bedient mehrere Clients gleichzeitig

Absturz eines Clients, f¨ uhrt nicht zum H¨ angenbleiben anderer

Clients

(8)

Nebenl¨ aufige Programmierung wird gebraucht

Auch auf Einprozessor-Systemen:

Durch Nebenl¨ aufigkeit k¨ onnen Ressourcen manchmal besser genutzt werden

Beispiel: 2 Aufgaben Lange Berechnung Große Datei schreiben

Datei schreiben belastet nicht die CPU (Geschwindigkeit wird von der Festplatte / Bus bestimmt)

Nebenl¨ aufigkeit: Wenn Festplatte busy, dann rechne.

Nebenl¨ aufige Programmierung als Strukturierungsprinzip

(9)

Nebenl¨ aufige Programmierung wird gebraucht (2)

Hartn¨ ackige Probleme und große Probleminstanzen:

Berechnung durch massive Parallelisierung / verteilte Berechnung

Hochleistungsrechner, “GRID-Computing”

(10)

Nebenl¨ aufige Programmierung wird gebraucht (3)

Entwicklung des Hardwaredesigns:

Taktfrequenzen am Rande ihre physikalischen M¨ oglichkeiten Statt Takterh¨ ohung Erh¨ ohung der Prozessoranzahl

Multicore-Architekturen

Architektur verlangt angepasste (parallelisierte) Programme

Herb Sutter: Multiprozessorsysteme

verlangen einen Paradigmenwechsel f¨ ur

Programmiersprachen

(11)

Was macht nebenl. Programmierung so schwer?

Parallelisierung sequentieller Algorithmen oft nicht offensichtlich.

Hauptproblem: Die parallel ablaufenden Programme m¨ ussen korrekt zusammenarbeiten.

Daten austauschen (Kommunikation)

Aufeinander warten (Synchronisation)

(12)

Beispiel: Kontof¨ uhrung

(Der Wert von konto vor der Ausf¨ uhrung sei 100)

Prozess P: Prozess Q:

(P1) X:= konto; (Q1) X := konto;

(P2) konto:= X-10; (Q2) konto := X+10;

(13)

Beispiel: Kontof¨ uhrung (2)

Prozess P : Prozess Q:

(P1) X:= konto; (Q1) X := konto;

(P2) konto:= X-10; (Q2) konto := X+10;

Ausf¨ uhrung (P1),(P2),(Q1),(Q2)

konto = 100

(14)

Beispiel: Kontof¨ uhrung (2)

Prozess P : Prozess Q:

(P1) X:= konto; (Q1) X := konto;

(P2) konto:= X-10; (Q2) konto := X+10;

X = 100

Ausf¨ uhrung (P1),(P2),(Q1),(Q2)

konto = 100

(15)

Beispiel: Kontof¨ uhrung (2)

Prozess P : Prozess Q:

(P1) X:= konto; (Q1) X := konto;

(P2) konto:= X-10; (Q2) konto := X+10;

X = 100

Ausf¨ uhrung (P1),(P2),(Q1),(Q2)

konto = 90

(16)

Beispiel: Kontof¨ uhrung (2)

Prozess P : Prozess Q:

(P1) X:= konto; (Q1) X := konto;

(P2) konto:= X-10; (Q2) konto := X+10;

X = 90 Ausf¨ uhrung (P1),(P2),(Q1),(Q2)

konto = 90

(17)

Beispiel: Kontof¨ uhrung (2)

Prozess P : Prozess Q:

(P1) X:= konto; (Q1) X := konto;

(P2) konto:= X-10; (Q2) konto := X+10;

X = 90 Ausf¨ uhrung (P1),(P2),(Q1),(Q2)

konto = 100

(18)

Beispiel: Kontof¨ uhrung (3)

Prozess P : Prozess Q:

(P1) X:= konto; (Q1) X := konto;

(P2) konto:= X-10; (Q2) konto := X+10;

Ausf¨ uhrung (Q1),(P1),(P2),(Q2)

konto = 100

(19)

Beispiel: Kontof¨ uhrung (3)

Prozess P : Prozess Q:

(P1) X:= konto; (Q1) X := konto;

(P2) konto:= X-10; (Q2) konto := X+10;

X = 100 Ausf¨ uhrung (Q1),(P1),(P2),(Q2)

konto = 100

(20)

Beispiel: Kontof¨ uhrung (3)

Prozess P : Prozess Q:

(P1) X:= konto; (Q1) X := konto;

(P2) konto:= X-10; (Q2) konto := X+10;

X = 100 X = 100

Ausf¨ uhrung (Q1),(P1),(P2),(Q2)

konto = 100

(21)

Beispiel: Kontof¨ uhrung (3)

Prozess P : Prozess Q:

(P1) X:= konto; (Q1) X := konto;

(P2) konto:= X-10; (Q2) konto := X+10;

X = 100 X = 100

Ausf¨ uhrung (Q1),(P1),(P2),(Q2)

konto = 90

(22)

Beispiel: Kontof¨ uhrung (3)

Prozess P : Prozess Q:

(P1) X:= konto; (Q1) X := konto;

(P2) konto:= X-10; (Q2) konto := X+10;

X = 100 X = 100

Ausf¨ uhrung (Q1),(P1),(P2),(Q2)

konto = 110

(23)

Beispiel: Kontof¨ uhrung (4)

Prozess P : Prozess Q:

(P1) X:= konto; (Q1) X := konto;

(P2) konto:= X-10; (Q2) konto := X+10;

Ausf¨ uhrung (Q1),(P1),(Q2),(P2)

konto = 100

(24)

Beispiel: Kontof¨ uhrung (4)

Prozess P : Prozess Q:

(P1) X:= konto; (Q1) X := konto;

(P2) konto:= X-10; (Q2) konto := X+10;

X = 100 Ausf¨ uhrung (Q1),(P1),(Q2),(P2)

konto = 100

(25)

Beispiel: Kontof¨ uhrung (4)

Prozess P : Prozess Q:

(P1) X:= konto; (Q1) X := konto;

(P2) konto:= X-10; (Q2) konto := X+10;

X = 100 X = 100

Ausf¨ uhrung (Q1),(P1),(Q2),(P2)

konto = 100

(26)

Beispiel: Kontof¨ uhrung (4)

Prozess P : Prozess Q:

(P1) X:= konto; (Q1) X := konto;

(P2) konto:= X-10; (Q2) konto := X+10;

X = 100 X = 100

Ausf¨ uhrung (Q1),(P1),(Q2),(P2)

konto = 110

(27)

Beispiel: Kontof¨ uhrung (4)

Prozess P : Prozess Q:

(P1) X:= konto; (Q1) X := konto;

(P2) konto:= X-10; (Q2) konto := X+10;

X = 100 X = 100

Ausf¨ uhrung (Q1),(P1),(Q2),(P2)

konto = 90

(28)

Beispiel: Kontof¨ uhrung (5)

Analyse ergibt:

Reihenfolge Wert von konto danach (P1),(P2),(Q1),(Q2) 100

(Q1),(Q2),(P1),(P2) 100 (P1),(Q1),(P2),(Q2) 110 (Q1),(P1),(P2),(Q2) 110 (P1),(Q1),(Q2),(P2) 90 (Q1),(P1),(Q2),(P2) 90

Fazit:

Falsch programmiert.

Traditionelles Debuggen funktioniert nicht

(29)

Verbraucher-Erzeuger Probleme

Annahme: Es gibt (Daten) erzeugende Prozesse und (Daten) verbrauchende Prozesse

Verschiedene Varianten:

Mehrere Verbraucher und ein Erzeuger Mehrere Erzeuger und ein Verbraucher Mehrere Erzeuger und mehrere Verbraucher

Gesucht:

Datenstrukturen um sicheren Austausch der Daten zwischen Verbrauchern und Erzeugern zu gew¨ ahrleisten.

Deswegen: Nebenl¨ aufige Programmierung ben¨ otigt neue

Datenstrukturen

(30)

Verbraucher-Erzeuger Probleme

Annahme: Es gibt (Daten) erzeugende Prozesse und (Daten) verbrauchende Prozesse

Verschiedene Varianten:

Mehrere Verbraucher und ein Erzeuger Mehrere Erzeuger und ein Verbraucher Mehrere Erzeuger und mehrere Verbraucher

Gesucht:

Datenstrukturen um sicheren Austausch der Daten zwischen Verbrauchern und Erzeugern zu gew¨ ahrleisten.

Deswegen: Nebenl¨ aufige Programmierung ben¨ otigt neue

(31)

Begriffe der nebenl¨ aufigen Programmierung

Definition und Abgrenzung wichtiger Begriffe

(32)

Begriffe der nebenl¨ aufigen Programmierung

Parallelit¨ at und Nebenl¨ aufigkeit Paralleles Programm:

Berechnung auf mehreren Prozessoren Gleichzeitig, ¨ uberlappend

Nebenl¨ aufige Programmierung (engl. concurrent programming):

Ausf¨ uhrung auf mehreren Prozessoren ein Szenario

Potentiell sind alle Ausf¨ uhrungsreihenfolgen m¨ oglich.

(33)

Begriffe der nebenl¨ aufigen Programmierung (2)

Nebenl¨ aufige und verteilte Systeme Verteiltes System:

System aus mehreren Prozessoren (oft auch ¨ ortlich getrennt) Kein gemeinsamer Speicher

Datenaustausch: Alleinig ¨ uber Senden und Empfangen von Nachrichten.

Nebenl¨ aufiges System:

Berechnung auf einem oder mehreren Prozessoren

Gemeinsamer Speicher m¨ oglich

(34)

Begriffe der nebenl¨ aufigen Programmierung (3)

Prozesse und Threads

Prozess wird in der Theorie verwendet (z.B. im π-Kalk¨ ul) Oft Unterscheidung anhand der Kontrolle:

Betriebssystem verwaltet Prozesse Programme verwalten Threads

wobei Programm ist Betriebssystem-Prozess

Wir trennen nicht strikt zwischen beiden Begriffen.

Multi-Threading = Eigenschaft von Programmiersprachen: Konstrukte zu Verwaltung von Threads

Verwandt: Multi-Tasking = M¨ oglichkeit mehrere Aufgaben

quasi-parallel durchzuf¨ uhren

(35)

Begriffe der nebenl¨ aufigen Programmierung (3)

Prozesse und Threads

Prozess wird in der Theorie verwendet (z.B. im π-Kalk¨ ul) Oft Unterscheidung anhand der Kontrolle:

Betriebssystem verwaltet Prozesse Programme verwalten Threads

wobei Programm ist Betriebssystem-Prozess Wir trennen nicht strikt zwischen beiden Begriffen.

Multi-Threading = Eigenschaft von Programmiersprachen: Konstrukte zu Verwaltung von Threads

Verwandt: Multi-Tasking = M¨ oglichkeit mehrere Aufgaben

quasi-parallel durchzuf¨ uhren

(36)

Begriffe der nebenl¨ aufigen Programmierung (3)

Prozesse und Threads

Prozess wird in der Theorie verwendet (z.B. im π-Kalk¨ ul) Oft Unterscheidung anhand der Kontrolle:

Betriebssystem verwaltet Prozesse Programme verwalten Threads

wobei Programm ist Betriebssystem-Prozess Wir trennen nicht strikt zwischen beiden Begriffen.

Multi-Threading = Eigenschaft von Programmiersprachen:

Konstrukte zu Verwaltung von Threads

Verwandt: Multi-Tasking = M¨ oglichkeit mehrere Aufgaben

quasi-parallel durchzuf¨ uhren

(37)

Begriffe der nebenl¨ aufigen Programmierung (3)

Prozesse und Threads

Prozess wird in der Theorie verwendet (z.B. im π-Kalk¨ ul) Oft Unterscheidung anhand der Kontrolle:

Betriebssystem verwaltet Prozesse Programme verwalten Threads

wobei Programm ist Betriebssystem-Prozess Wir trennen nicht strikt zwischen beiden Begriffen.

Multi-Threading = Eigenschaft von Programmiersprachen:

Konstrukte zu Verwaltung von Threads

Verwandt: Multi-Tasking = M¨ oglichkeit mehrere Aufgaben

quasi-parallel durchzuf¨ uhren

(38)

Begriffe der nebenl¨ aufigen Programmierung (4)

Message-Passing- und Shared-Memory Modell Message-Passing-Modell:

Prozesse haben keinen gemeinsamen Speicher.

Kommunikation ausschließlich ¨ uber Senden und Empfangen von Nachrichten.

Passt zu verteilten Systemen Shared-Memory-Modell:

Prozesse verwenden auch gemeinsamen Speicher.

Kommunikation findet direkt ¨ uber den gemeinsamen Speicher

statt.

(39)

Begriffe der nebenl¨ aufigen Programmierung (4)

Synchrone und asynchrone Kommunikation Synchron:

Kommunikation zwischen Sender und Empf¨ anger geschieht

“ohne Zeit”

Beispiel: Telefon Asynchron:

Senden und Empfangen muss nicht gleichzeitig stattfinden.

Oft nat¨ urlicher.

Beispiel: Briefe oder Emails schreiben ist asynchron.

Referenzen

ÄHNLICHE DOKUMENTE

blockiert: Prozess darf keine Schritte ausf¨ uhren Blockieren / Entblockieren durch Programmbefehle, nicht durch Scheduler..

Initial: wartend: atomares Register, am Anfang 0 kunden: genereller Semaphor, am Anfang 0 mutex: bin¨ arer Semaphor, am Anfang 1 synch,friseur: bin¨ arer Semaphor am Anfang 0

signalC(cond) kann effektlos sein: Entweder Prozess in cond wird entblockiert, oder effektlos, wenn cond leer ist. TCS | 06 Programmierprimitiven II | WS 2019/20 17/53

TCS | 07 Programmierprimitiven III | WS 2019/20 22/61 Kan¨ ale Tuple Spaces: Das Linda Modell.. n¨ utzlich bei.. n¨ utzlich bei.. n¨ utzlich bei.. n¨ utzlich bei.. n¨ utzlich bei..

2 Halten und Warten (Hold and Wait): Ein Prozess kann eine Ressource anfordern (auf eine Ressource warten), w¨ ahrend er eine andere Ressource bereits belegt hat.. 3 Keine

F¨ ur Kalk¨ ule: Zwei Ausdr¨ ucke s, t sind gleich, wenn man sie nicht unterscheiden kann, egal in welchem Kontext man sie benutzt. Formaler: s und t sind gleich, wenn f¨ ur alle

Oft: Terminierung von Prozessen nicht zentral, da verteilte Systeme oft in Endlosschleifen laufen und somit nicht terminieren. Gleichheitsbegriff oft: Prozesse haben gleiche Ein-

Daten und Operationen werden durch Prozesse ausgedr¨ uckt der Kontrollfluss wird durch Prozesskommunikation..