Verständnisfragen bzgl. CSP Ausdruck und Prozesse

dees
Windoof-User
Windoof-User
Beiträge: 28
Registriert: 6. Mär 2011 14:01

Verständnisfragen bzgl. CSP Ausdruck und Prozesse

Beitrag von dees »

Hallo,
ich blick generell noch nicht so im Thema durch und hätte ein paar Fragen bzgl. CSP-Adruck und Prozesse.

1) Jeder Prozessausdruck spezifiziert ja einen Prozess.
Der Prozess, den der Ausdruck auf Foliensatz 12 Folie 17 spezifiert wäre dann also:
P = ({right, up}, {(), (right), (right,up), (right,right), (right,right,right), (right,right,right,up)} )
Ist das richtig?

2) Um einen unendlich laufenden Prozess zu spezifizieren, erzeuge ich einen Prozessaudruck der sich selbst wieder rekursiv aufruft. Kann man das so sagen?

3) Was mir nicht so klar ist, ist die BNF mit dem Id, was hat es damit auf sich? Ist das der Bezeichner der Gleichung, welcher wieder rekursiv aufgerufen wird?

4) Kann mir jemand erklären was es genau mit dem "guarded" auf sich hat und wann ich das genau einsetzen muss?

5) In Übung 13.2 sollen wir einen CSP-Ausdruck und Gleichungssystem erstellen. Wie geht man da am besten vor sowas zu lösen? Die Gleichungen machen zwar Sinn aber selber drauf gekommen wäre ich nicht direkt.

mfG

fscheepy
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 153
Registriert: 14. Dez 2009 21:17

Re: Verständnisfragen bzgl. CSP Ausdruck und Prozesse

Beitrag von fscheepy »

Ich bin da selbst nicht 100%ig sicher, aber ich werde deine Fragen mal nach bestem Wissen und Gewissen beantworten:

1) So hätte ich es auch geschrieben, ja.
2) Ich denke, das lässt sich so sagen, ja.
3) Unter der BNF auf Folie 23 steht ja, dass "Id eine Menge von Prozessbezeichnern ist". id ist dann ein Element aus dieser Menge, welches rekursiv aufgerufen werden kann.
4) Soweit ich es verstanden habe, benötigst du einen Guard, falls du einen Prozessbezeichner id auf der rechten Seite einer Gleichung stehen hast. Wie es aussieht, ist der Guard dazu da, dass du sicherstellst, dass vor dem (rekursiven) Aufruf noch ein Ereignis geschieht.
5) Auf diesen Ausdruck wäre ich so auch nicht gekommen. Mein (Bruteforce-mäßiger :mrgreen: ) Ansatz war, für jeden Zustand einen Bezeichner einzuführen (z.B. den Zustand 00 als Bezeichner XX, 01 als XY, 02 als XZ, 10 als YX,...) und dann für jede Transition den entsprechenden Prozessschritt hinzuzufügen, also beispielsweise:
XX = ((a -> XY) ^ (b -> YX))
YX = ((b -> XX) ^ ...und so weiter (das ^ ist hier natürlich syntaktisch nicht korrekt, aber ich hab keine Ahnung, wie man das richtige Zeichen macht).

dees
Windoof-User
Windoof-User
Beiträge: 28
Registriert: 6. Mär 2011 14:01

Re: Verständnisfragen bzgl. CSP Ausdruck und Prozesse

Beitrag von dees »

fscheepy hat geschrieben:
4) Soweit ich es verstanden habe, benötigst du einen Guard, falls du einen Prozessbezeichner id auf der rechten Seite einer Gleichung stehen hast. Wie es aussieht, ist der Guard dazu da, dass du sicherstellst, dass vor dem (rekursiven) Aufruf noch ein Ereignis geschieht.
Kannst du mir da irgendein Beispiel geben?
fscheepy hat geschrieben: 5) Auf diesen Ausdruck wäre ich so auch nicht gekommen. Mein (Bruteforce-mäßiger :mrgreen: ) Ansatz war, für jeden Zustand einen Bezeichner einzuführen (z.B. den Zustand 00 als Bezeichner XX, 01 als XY, 02 als XZ, 10 als YX,...) und dann für jede Transition den entsprechenden Prozessschritt hinzuzufügen, also beispielsweise:
XX = ((a -> XY) ^ (b -> YX))
YX = ((b -> XX) ^ ...und so weiter (das ^ ist hier natürlich syntaktisch nicht korrekt, aber ich hab keine Ahnung, wie man das richtige Zeichen macht).
So war auch mein Lösungsansatz der allerdings nicht ganz so schön ist wie die Musterlösung ;)

gruß

fscheepy
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 153
Registriert: 14. Dez 2009 21:17

Re: Verständnisfragen bzgl. CSP Ausdruck und Prozesse

Beitrag von fscheepy »

Modul 12, Folie 25 ist ja schon ein Beispiel:
Clock = (tick -> Clock)
hierbei ist also "tick" der Guard, der dafür sorgt, dass vor dem rekursiven Aufruf immer ein Ereignis passiert. Unzulässig wäre hingegen beispielsweise Clock = Clock. Das ganze ist dazu da, um das Problem auf Folie 24 zu vermeiden: Wir verbieten einfach, dass Gleichungen wie
Clock = Mem
Mem = Clock
verwendet werden, falls beispielsweise Mem ein zweiter Bezeichner wäre.

mrzb6
Mausschubser
Mausschubser
Beiträge: 54
Registriert: 4. Okt 2010 21:50
Wohnort: Darmstadt

Re: Verständnisfragen bzgl. CSP Ausdruck und Prozesse

Beitrag von mrzb6 »

Ich schließe mich hier mal mit meinen Fragen an...

Meine Fragen beziehen sich auf SKIP und STOP (Modul 12, Folie 12ff):
  1. Es gilt traces(SKIP) = \(\{( ), \sqrt{ }\}\). Hat das \(()\) noch einen anderen Nutzen, außer Präfixabgeschlossenheit zu garantieren?
  2. Könnte in einem Prozess, der mit SKIP endet, auch die leere Trace statt \(\sqrt{ }\) stehen?
  3. Wann sollte SKIP und wann STOP verwendet werden? Was ist die Erklärung dafür, dass STOP und nicht SKIP auf Folie 15 verwendet wird?

arne.lottmann
Mausschubser
Mausschubser
Beiträge: 99
Registriert: 4. Okt 2010 16:25

Re: Verständnisfragen bzgl. CSP Ausdruck und Prozesse

Beitrag von arne.lottmann »

1. Ich denke, die leere Trace ist nur dazu da, genau diese Abgeschlossenheit zu erreichen. Steht auch so unten auf Folie 12.13.
2. Prinzipiell ja.
3. Meinem Verständnis nach ist \(STOP_E\) der Prozess, der nichts tut, und \(SKIP_E\)der Prozess, der terminiert. Entsprechend ist \(STOP_{\{right,up\}}\) in deinem Beispiel (12.15) dazu da, aus einem einzelnen Ereignis einen Prozess zu machen, der genau dieses Ereignis "ausführt", denn \(\rightarrow\) ist ja definiert als \(ereignis \rightarrow prozess\), also kann rechts kein einzelnes Ereignis stehen.
Warum da nicht auch \(SKIP_{\{right,up\}}\) stehen kann, weiß ich so nicht. In dem Beispiel bliebe der Figur ja nichts anderes übrig, als auf der Stelle stehen zu bleiben, also könnte der Prozess mMn genauso gut terminieren…

Dennis Albrecht
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 222
Registriert: 4. Okt 2010 18:15

Re: Verständnisfragen bzgl. CSP Ausdruck und Prozesse

Beitrag von Dennis Albrecht »

Also ich hatte es so vestanden, dass die leeren Klammern das STOP representieren und der Haken das SKIP.
Terminieren und nicht terminieren macht schon einen Unterschied (das komische am Nichtterminieren ist hier nur, dass der Prozess weder terminiert noch weiter fortläuft :D). Aber ich glaube bei unseren Aufgaben ist es dir freigestellt, ob du den Prozess terminieren lässt oder nicht. Wobei ein terminierender Prozess natürlich sauberer ist.

Gruß

Antworten

Zurück zu „Archiv“