Vorlesungsskriptum zu Spezielle Anwendersprachen
Nächste Seite:InhaltsverzeichnisInhaltsverzeichnis
Concurrent Programming
Vorwort
Dieses Skriptum ist während der Vorlesung ,,Spezielle Anwendersprachen - Concurrent Programming`` im Sommersemester 1998 entstanden. Der Inhalt wurde direkt von den Folien des Dozenten Dr. Werner Pohlmann übernommen, wobei kleinere Korrekturen während der Vorlesung berücksichtigt wurden. Getippt wurde dieser Text von Ronald Blaschke im Satzprogramm LATEX. Die aktuelle Version dieses Dokumentes kann von seiner Homepage 11 bezogen werden.
Ein herzliches Dankeschön ergeht an dieser Stelle an den Dozenten Dr. Werner Pohlmann für seine freundliche Unterstützung und an Peter Meerwald für sein umständliches Korrekturlesen dieses Skriptums.
Das Copyright liegt natürlich beim Dozenten bzw. bei der Universität Salzburg.
Inhaltlich wurde die Erstellung dieses Skriptums am 02.07.1998 mit Revision 1.9 abgeschlossen.
RCS Information
- InhaltsverzeichnisInhaltsverzeichnis
-
EinleitungEinleitung
-
Worum geht's?Worum geht's?
- Technische GegebenheitenTechnische Gegebenheiten
- AusführungsmodiAusführungsmodi
- Konkurrente Programme, konkurrentes ProgrammierenKonkurrente Programme, konkurrentes Programmieren
- Interaktion von ProzessenInteraktion von Prozessen
- Zwecke, AnwendungsbereicheZwecke, Anwendungsbereiche
- Beispiele/Anwendungsgebiete für konkurrentes ProgrammierenBeispiele/Anwendungsgebiete für konkurrentes Programmieren
-
Kleines BeispielKleines Beispiel
- Lösung mit passiven ObjektenLösung mit passiven Objekten
- KritikKritik
- Konkurrente Lösung mit aktiven Objekten (Prozessen)Konkurrente Lösung mit aktiven Objekten (Prozessen)
- KritikKritik
-
Vorgehensweise und Plan der VorlesungVorgehensweise und Plan der Vorlesung
- LiteraturLiteratur
-
Worum geht's?Worum geht's?
-
Ada Tasks IAda Tasks I
- BeispielBeispiel
-
Wechselseitiger Ausschluß und gemeinsame VariablenWechselseitiger Ausschluß und gemeinsame Variablen
- Wechselseitiger Ausschluß (,,mutual exclusion``)Wechselseitiger Ausschluß (,,mutual exclusion``)
- Gemeinsame Variablen (,,shared variables``)Gemeinsame Variablen (,,shared variables``)
- Terminologie/ProblemstrukturTerminologie/Problemstruktur
- Beispiel: Gemeinsame Variablen (Shared_Demo1)Beispiel: Gemeinsame Variablen (Shared_Demo1)
- HausaufgabeHausaufgabe
- Anmerkung zum HauptprogrammAnmerkung zum Hauptprogramm
- Wie Problem lösen?Wie Problem lösen?
-
Idee 1Idee 1
- Safety des VerfahrensSafety des Verfahrens
- Verklemmung des VerfahrensVerklemmung des Verfahrens
-
Idee 2Idee 2
- HausaufgabeHausaufgabe
- Idee 3Idee 3
-
Idee 4Idee 4
- Kombination vermeidet deadlock-Gefahr von Idee 1Kombination vermeidet deadlock-Gefahr von Idee 1
- Kombination vermeidet strikte Abwechslung wie in Idee 3Kombination vermeidet strikte Abwechslung wie in Idee 3
- Beispiel (Shared_Demo2)Beispiel (Shared_Demo2)
- Kritik an Lösung und verwendeten MittelnKritik an Lösung und verwendeten Mitteln
- Konsequenz darausKonsequenz daraus
- HausaufgabeHausaufgabe
-
Semaphore und MonitoreSemaphore und Monitore
-
SemaphoreSemaphore
- Ein Sempaphor S ist eine Variable mit Natural-Werten und zwei OperationenEin Sempaphor S ist eine Variable mit Natural-Werten und zwei Operationen
- Für Sempaphor S gilt folgende InvarianteFür Sempaphor S gilt folgende Invariante
- Beispiel: Wechselseitiger AusschlußBeispiel: Wechselseitiger Ausschluß
-
Korrektheit der LösungKorrektheit der Lösung
- VariantenVarianten
-
Producer-Consumer ProblemProducer-Consumer Problem
- BeispielBeispiel
- HausaufgabeHausaufgabe
-
MonitoreMonitore
- Beispiel: Producer-ConsumerBeispiel: Producer-Consumer
- Semantik der Monitor-KonstruktionSemantik der Monitor-Konstruktion
- Interpretation von SignalInterpretation von Signal
- Kritik an MonitorenKritik an Monitoren
-
SemaphoreSemaphore
-
Zwischenbilanz, Ausblick AdaZwischenbilanz, Ausblick Ada
- AnalogieAnalogie
-
Message passingMessage passing
- BeispieleBeispiele
- Die Techniken in AdaDie Techniken in Ada
- HausaufgabeHausaufgabe
-
Ada Tasking IIAda Tasking II
-
TasksTasks
- BeispieleBeispiele
- Verschiedene Tasks desselben TypsVerschiedene Tasks desselben Typs
-
Aktivierung, Ausführung, TerminierungAktivierung, Ausführung, Terminierung
- Task Objekt deklariert in HauptprogrammTask Objekt deklariert in Hauptprogramm
- Task deklariert in (library-) PackageTask deklariert in (library-) Package
- Task wird dynamisch erzeugt durch AllokatorTask wird dynamisch erzeugt durch Allokator
-
RendezvousRendezvous
- Beispiel: Imitation einer binären SemaphoreBeispiel: Imitation einer binären Semaphore
- Zur ZeitmessungZur Zeitmessung
-
Beispiel für Kooperation von TasksBeispiel für Kooperation von Tasks
- Beispiel 1Beispiel 1
- Beispiel 2Beispiel 2
- Beispiel 3Beispiel 3
- Beispiel 4Beispiel 4
- Beispiel 5Beispiel 5
- Beispiel 6Beispiel 6
- HausaufgabeHausaufgabe
-
Protected types & protected objectsProtected types & protected objects
- Syntax für DeklarationSyntax für Deklaration
- SemantikSemantik
- Wichtige EinschränkungWichtige Einschränkung
- Bedingungssynchronisation (conditional synchronisation)Bedingungssynchronisation (conditional synchronisation)
-
Tasking & ExceptionsTasking & Exceptions
- tasking-errortasking-error
- HausaufgabeHausaufgabe
-
Exkurs: Diskriminanten (= Parameter für Typen)Exkurs: Diskriminanten (= Parameter für Typen)
- Klassischer Fall: Record Typ mit DiskriminanteKlassischer Fall: Record Typ mit Diskriminante
- Task types mit DiskriminanteTask types mit Diskriminante
-
TasksTasks
-
Rendezvous mit AlternativenRendezvous mit Alternativen
-
Accept-AlternativenAccept-Alternativen
- accept_alternativeaccept_alternative
- GuardsGuards
- terminate Alternativeterminate Alternative
- Methodische BemerkungMethodische Bemerkung
- Beispiel: server taskBeispiel: server task
- Beispiel: Primzahlen durch SiebmethodeBeispiel: Primzahlen durch Siebmethode
- HausaufgabeHausaufgabe
- Delay-AlternativeDelay-Alternative
- else-Teil des select-statementselse-Teil des select-statements
-
Entry-Call mit AlternativeEntry-Call mit Alternative
- Timed entry callTimed entry call
- Conditional entry callConditional entry call
- Auswahl unter mehreren entry callsAuswahl unter mehreren entry calls
- Deadlock revisitedDeadlock revisited
-
Accept-AlternativenAccept-Alternativen
-
BeispieleBeispiele
-
Readers-Writers-ProblemReaders-Writers-Problem
- GegebenGegeben
- GesuchtGesucht
- Illustration: Ressource = gemeinsame VariableIllustration: Ressource = gemeinsame Variable
- Mängel der LösungMängel der Lösung
- AlternativeAlternative
- UnterschiedeUnterschiede
-
Dining PhilosophersDining Philosophers
- GegebenGegeben
- GesuchtGesucht
- Offensichtlich nötigOffensichtlich nötig
- Schubfachprinzip (=pigeonhole principle)Schubfachprinzip (=pigeonhole principle)
-
Asynchrone IterationAsynchrone Iteration
- Standard IterationStandard Iteration
- Chaotische IterationChaotische Iteration
- BeispielBeispiel
- LiteraturLiteratur
- HausaufgabeHausaufgabe
-
Readers-Writers-ProblemReaders-Writers-Problem
-
Ada ,,requeue`` KonstruktAda ,,requeue`` Konstrukt
- AbhilfeAbhilfe
-
Prinzip der LösungPrinzip der Lösung
- KritikKritik
- Zur Syntax und Semantik von ,,requeue``Zur Syntax und Semantik von ,,requeue``
- BeispielBeispiel
- HausaufgabeHausaufgabe
-
Concurrency and ObjectsConcurrency and Objects
- GrundsätzlichesGrundsätzliches
-
Einfache Synchronisationsmechanismen für ObjektzugriffeEinfache Synchronisationsmechanismen für Objektzugriffe
- Objekte enthalten Synchronisationsmechanismen als AttributObjekte enthalten Synchronisationsmechanismen als Attribut
- Protected object ist über Diskriminante mit zu schützendem Object verbundenProtected object ist über Diskriminante mit zu schützendem Object verbunden
- ,,Bounded Buffer`` im Stil 10.2.2 (Code aus Burns/Wellings),,Bounded Buffer`` im Stil 10.2.2 (Code aus Burns/Wellings)
-
Inheritance AnomalyInheritance Anomaly
- Objekte mit Rumpf (body)Objekte mit Rumpf (body)
- Akzeptanz-Mengen (,,enabled sets``)Akzeptanz-Mengen (,,enabled sets``)
- Wächter (guards) für MethodenWächter (guards) für Methoden
- Über dieses Dokument ...Über dieses Dokument ...
Ronald Blaschke 2001-06-02