05.10.2013 Aufrufe

Text anzeigen (PDF) - bei DuEPublico

Text anzeigen (PDF) - bei DuEPublico

Text anzeigen (PDF) - bei DuEPublico

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.

In Beispiel 3 -1 sind systemweit die Maschinendienste compute, receive, transmit und copy definiert.<br />

Zwischen den <strong>bei</strong>den SDL-Blöcken ist eine pipe namens pi definiert, die compute und<br />

receive von B1 an B2 übertragen kann und transmit und copy in die andere Richtung. Daher<br />

könnte zum Beispiel im Block B2 eine Maschine definiert werden, die die Dienste compute und<br />

receive anbietet, vgl. Abschnitt 3.4. Diese Dienste könnten von Prozessen in B1 angefordert werden.<br />

3.4 Ergänzungen auf Blockebene<br />

Auf der Blockebene können wie auf der Systemebene weitere Maschinendienste deklariert werden.<br />

Diese sind dann nur innerhalb des Blocks bekannt. Sollten hier Dienste mit Namen definiert<br />

werden, die bereits auf Systemebene verwendet wurden, so überschreibt die Blockdefinition die<br />

Systemdefinition.<br />

Die Maschinen werden ebenfalls auf Blockebene definiert. Dies geschieht durch das Schlüsselwort<br />

machine. Zur vollständigen Spezifikation einer Maschine gehört die Angabe eines Bezeichners,<br />

die Anzahl der Bedieneinheiten, eine Angabe der Bedienstrategie sowie eine Menge von<br />

Maschinendiensten und dienstspezifischen Geschwindigkeiten.<br />

Den Transport von Dienstaufrufen übernehmen auf Blockebene sogenannte Links. Links sind<br />

uni-direktionale Verbindungen, die in einer Maschine enden. Der Anfangspunkt eines link ist<br />

entweder ein Prozeß oder die Blockgrenze, die eine Schnittstelle zur Umgebung bildet. An der<br />

Blockgrenze kann der link durch bind to an eine pipe angeschlossen werden.<br />

Beispiel 3 -2 Ergänzungen auf Blockebene (QSDL/GR und QSDL/PR)<br />

[pi]<br />

Block B2 machineservice<br />

getad(Natural);<br />

compute,<br />

receive<br />

getad<br />

Comp<br />

li1 li2<br />

Entity<br />

block b2;<br />

process Entity referenced;<br />

/*## machineservice getad(Natural); ##*/<br />

/*## machine Comp;<br />

server 1;<br />

discipline fcfs;<br />

offers compute: 1.0, receive:2,<br />

getad:4;<br />

endmachine; ##*/<br />

/*## link li1 from ENV to Comp<br />

with compute, receive; ##*/<br />

/*## link li2 from Entity to Comp<br />

with getad; ##*/<br />

/*## bind pi to li1; ##*/<br />

endblock;<br />

Das obige Beispiel zeigt die QSDL-Ergänzungen auf Blockebene exemplarisch anhand des<br />

Blocks B2 aus dem vorhergehenden Beispiel.<br />

Zusätzlich zu den bereits auf Systemebene definierten Maschinendiensten wird hier noch ein<br />

weiterer Dienst mit Namen getad definiert. Dieser Dienst kann neben den <strong>bei</strong>den systemweit<br />

bekannten Diensten compute und receive von der Maschine Comp erbracht werden. Die<br />

Maschine besitzt einen Bediener, sie entnimmt die Kunden aus der Warteschlange gemäß der<br />

29

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!