25.11.2014 Aufrufe

Verifikation reaktiver Systeme - Universität Kaiserslautern

Verifikation reaktiver Systeme - Universität Kaiserslautern

Verifikation reaktiver Systeme - Universität Kaiserslautern

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

280<br />

4 Esterel und (P,P)–PES<br />

(1,1)–PES sind ausdrucksstark genug, um Esterel zu modellieren. Esterel erlaubt<br />

eine beschränkte Anzahl von parallelen Statements, die als Produktautomat mit<br />

endlichen Automaten modelliert werden können. Die (unbeschränkte) parallele<br />

Komposition von (P,P)–PES kann jedoch gegebenenfalls dazu verwendet werden,<br />

eine einfachere und intuitivere Modellierung für Esterel–Programme zu erzeugen.<br />

Der initiale Term der parallelen Statements ist die parallele Komposition<br />

der initialen Terme der Statements. Die Menge der Terme ist die Vereinigung<br />

der Terme der Statements. Die Regeln der Statements werden übernommen und<br />

vereinigt. Nachfolgeterm ist ein neuer Term ’F’. Sind beide Statements terminiert<br />

(also nach ’F’ umgeschrieben), terminiert das parallele Statement und wird in<br />

den Nachfolgeterm N umgeschrieben. Sei F ∈ T ein neuer Term. Es ist:<br />

root(S ‖ T) = root(S) ‖ root(T)<br />

terms(S ‖ T) = terms(S) ∪ terms(T)<br />

rules(S ‖ T, N, def) = rules(S,F,def)∪ rules(T,F,def)<br />

∪{F ‖ F true<br />

−−−→ N}<br />

Dieser Ansatz benötigt einen zusätzlichen Schritt zur Synchronisation der<br />

beiden parallelen Statements. Um der Semantik von Esterel zu entsprechen,<br />

darf dieser Schritt keine Zeit verbrauchen. In jedem Fall entsteht ein neuer Zustand<br />

’F ‖ F’, der bei der Umsetzung als Produktautomat nicht existiert. Dieser<br />

Schritt kann durch einige zusätzliche Regeln entfernt werden. Für ein Paar von<br />

Regeln der Statements S und T, die in den Term F umschreiben, werden neue<br />

Regeln eingeführt. Sind beide Regeln aktiviert, wird in den Nachfolgeterm N<br />

umgeschrieben, ansonsten wird der Prozess, dessen Regeln aktiviert ist, in den<br />

Term ’F’ umgeschrieben.<br />

root(S ‖ T) = root(S) ‖ root(T)<br />

terms(S ‖ T) = terms(S) ∪ terms(T)<br />

rules(S ‖ T, N, def) =<br />

{s ‖ t −−→ x∧y<br />

N, s −−−→ x∧¬y<br />

F, t −−−→ ¬x∧y<br />

F, s ‖ F −→ x N, F ‖ t −→ y N<br />

| s −→ x F ∈ rules(S, F, def), t −→ y F ∈ rules(T,F,def)}<br />

∪{s −→ x s’ | s −→ x s’ ∈ rules(S, F, def) ∪ rules(T,F,def)∧ s’ ≠F}<br />

Parallele Prozesse in Esterel sind synchron und führen gleichzeitig Schritte<br />

durch. Bei der Umsetzung mit (P,P)–PES führt dies zu Problemen. Bei der hier<br />

gewählten Umsetzung werden die Regeln der parallelen Statements vereinigt,<br />

d.h. ein Ersetzungsschritt hat nur Auswirkungen auf einen der beiden Prozesse.<br />

Dies entspricht einem Interleaving der Prozesse und nicht einer synchronen<br />

Ausführung wie in Esterel. Synchronität kann durch Ersetzungsregeln, die sich<br />

auf beide Prozesse beziehen, erreicht werden. Dazu wird eine Anzahl von Regeln<br />

benötigt, die der eines Produktautomaten entspricht. Die Verwendung von

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!