• Keine Ergebnisse gefunden

Einleitung WarumistNebenl¨aufigeProgrammierunginteressant? Nebenl¨aufigenProgrammierung Sequentielleundnebenl¨aufigeProgrammierung ¨Ubersicht

N/A
N/A
Protected

Academic year: 2021

Aktie "Einleitung WarumistNebenl¨aufigeProgrammierunginteressant? Nebenl¨aufigenProgrammierung Sequentielleundnebenl¨aufigeProgrammierung ¨Ubersicht"

Copied!
6
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

Letzte ¨Anderung der Folien: 17. Oktober 2019

Ubersicht ¨

1

Warum nebenl¨ aufige Programmierung?

2

Begriffe der nebenl¨ aufigen Programmierung

TCS | 02 Einleitung | WS 2019/20 2/23 Warum nebenl¨aufige Programmierung? Begriffe

Warum ist

Nebenl¨ aufige Programmierung interessant?

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

Schwierigkeiten bei nebenl¨ aufiger Programmierung

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

(2)

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

TCS | 02 Einleitung | WS 2019/20 5/23 Warum nebenl¨aufige Programmierung? Begriffe

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

TCS | 02 Einleitung | WS 2019/20 6/23 Warum nebenl¨aufige Programmierung? Begriffe

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

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

(3)

Nebenl¨ aufige Programmierung wird gebraucht (2)

Hartn¨ ackige Probleme und große Probleminstanzen:

Berechnung durch massive Parallelisierung / verteilte Berechnung

Hochleistungsrechner, “GRID-Computing”

TCS | 02 Einleitung | WS 2019/20 9/23 Warum nebenl¨aufige Programmierung? Begriffe

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

TCS | 02 Einleitung | WS 2019/20 10/23 Warum nebenl¨aufige Programmierung? Begriffe

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)

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;

(4)

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

TCS | 02 Einleitung | WS 2019/20 13/23 Warum nebenl¨aufige Programmierung? Begriffe

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 = 110

TCS | 02 Einleitung | WS 2019/20 14/23 Warum nebenl¨aufige Programmierung? Begriffe

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 = 90

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

(5)

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

TCS | 02 Einleitung | WS 2019/20 17/23 Warum nebenl¨aufige Programmierung? Begriffe

Begriffe der nebenl¨ aufigen Programmierung

Definition und Abgrenzung wichtiger Begriffe

TCS | 02 Einleitung | WS 2019/20 18/23 Warum nebenl¨aufige Programmierung? Begriffe

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.

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

(6)

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

TCS | 02 Einleitung | WS 2019/20 21/23 Warum nebenl¨aufige Programmierung? Begriffe

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.

TCS | 02 Einleitung | WS 2019/20 22/23 Warum nebenl¨aufige Programmierung? Begriffe

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

Nur eine Queue pro Objekt (zwischen verschiedenen Condition Variablen kann nicht unterschieden werden). wait(): Thread wartet an der Queue des Objekts notify(): Ein wartender

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

TCS | 07 Programmierprimitiven III | WS 2019/20 2/61 Kan¨ ale Tuple Spaces: Das Linda Modell.. Shared

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

Sind alle gemeinsamen Ressourcen durch eine totale Ordnung geordnet und jeder Prozess belegt seine ben¨ otigten Ressourcen in aufsteigender Reihenfolge bez¨ uglich der totalen