122
2 Spezifikation und Modellierung
2.8 Von-Neumann-Sprachen
Die sequenzielle Ausführung ist die gemeinsame Eigenschaft aller von-NeumannSprachen. Solche Sprachen erlauben zudem meist einen fast unbeschränkten Zugriff
auf globale Variablen. Auch wenn der modellbasierte Entwurf mit kommunizierenden endlichen Automaten und Berechnungsgraphen für eingebettete Systeme deutlich besser geeignet ist, sind von-Neumann-Sprachen immer noch weit verbreitet.
Daher können wir diese Sprachen nicht ignorieren. Die Unterscheidung zwischen
KPNs und mit geeigneten Beschränkungen versehenen von-Neumann-Sprachen wird
allerdings immer unschärfer. Bei KPNs wird auch von der sequenziellen Ausführung von Code in jedem der Knoten ausgegangen. Wir behalten die Unterscheidung
zwischen KPNs und von-Neumann-Sprachen aber weiterhin bei, da der Schwerpunkt von KPNs auf der Modellierung der Kommunikation liegt und Details der
Ausführung in den einzelnen Knoten unwichtig sind. Die ersten beiden in diesem
Abschnitt behandelten Sprachen verfügen über Kommunikationsmechanismen. Der
Schwerpunkt der restlichen Sprachen liegt bei Berechnungen, die Kommunikation
kann durch den Einsatz verschiedener Bibliotheken realisiert werden.
2.8.1 CSP
CSP [218] (engl. Communicating Sequential Processes, kommunizierende sequentielle Prozesse) ist eine der ersten Sprachen, die Mechanismen für Interprozesskommunikation enthalten. Die Kommunikation basiert auf Kanälen.
Beispiel 2.37: Wir betrachten die Ein- und Ausgabe für den Kanal c :
process A
process B
.....
......
var a ..
var b ...
a := 3;
...
c!a; -- Ausgabe auf Kanaa c
c?b; -- Eingabe von Kanaa c
end;
end;
Beide Prozesse warten, bis der jeweils andere Prozess bei der Eingabe- bzw.
Ausgabeanweisung angekommen ist. Diese Form der Kommunikation bezeichnet
man als Rendez-Vous-Konzept oder als blockierende Kommunikation.
∇
CSP ist deterministisch, da es, wie Kahn-Prozessnetzwerke auch, auf Eingaben
von einem bestimmten Kanal wartet.
CSP war die Grundlage für die Sprache OCCAM, die als Programmiersprache
für Transputer [436] eingeführt wurde. Die Idee, einen Prozessor mit Kommunikationskanälen zu entwerfen, wurde beim XS1-Prozessor wiederverwendet [603].
2 Spezifikation und Modellierung
2.8 Von-Neumann-Sprachen
Die sequenzielle Ausführung ist die gemeinsame Eigenschaft aller von-NeumannSprachen. Solche Sprachen erlauben zudem meist einen fast unbeschränkten Zugriff
auf globale Variablen. Auch wenn der modellbasierte Entwurf mit kommunizierenden endlichen Automaten und Berechnungsgraphen für eingebettete Systeme deutlich besser geeignet ist, sind von-Neumann-Sprachen immer noch weit verbreitet.
Daher können wir diese Sprachen nicht ignorieren. Die Unterscheidung zwischen
KPNs und mit geeigneten Beschränkungen versehenen von-Neumann-Sprachen wird
allerdings immer unschärfer. Bei KPNs wird auch von der sequenziellen Ausführung von Code in jedem der Knoten ausgegangen. Wir behalten die Unterscheidung
zwischen KPNs und von-Neumann-Sprachen aber weiterhin bei, da der Schwerpunkt von KPNs auf der Modellierung der Kommunikation liegt und Details der
Ausführung in den einzelnen Knoten unwichtig sind. Die ersten beiden in diesem
Abschnitt behandelten Sprachen verfügen über Kommunikationsmechanismen. Der
Schwerpunkt der restlichen Sprachen liegt bei Berechnungen, die Kommunikation
kann durch den Einsatz verschiedener Bibliotheken realisiert werden.
2.8.1 CSP
CSP [218] (engl. Communicating Sequential Processes, kommunizierende sequentielle Prozesse) ist eine der ersten Sprachen, die Mechanismen für Interprozesskommunikation enthalten. Die Kommunikation basiert auf Kanälen.
Beispiel 2.37: Wir betrachten die Ein- und Ausgabe für den Kanal c :
process A
process B
.....
......
var a ..
var b ...
a := 3;
...
c!a; -- Ausgabe auf Kanaa c
c?b; -- Eingabe von Kanaa c
end;
end;
Beide Prozesse warten, bis der jeweils andere Prozess bei der Eingabe- bzw.
Ausgabeanweisung angekommen ist. Diese Form der Kommunikation bezeichnet
man als Rendez-Vous-Konzept oder als blockierende Kommunikation.
∇
CSP ist deterministisch, da es, wie Kahn-Prozessnetzwerke auch, auf Eingaben
von einem bestimmten Kanal wartet.
CSP war die Grundlage für die Sprache OCCAM, die als Programmiersprache
für Transputer [436] eingeführt wurde. Die Idee, einen Prozessor mit Kommunikationskanälen zu entwerfen, wurde beim XS1-Prozessor wiederverwendet [603].
