05.10.2013 Aufrufe

Text anzeigen (PDF) - bei DuEPublico

Text anzeigen (PDF) - bei DuEPublico

Text anzeigen (PDF) - bei DuEPublico

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

CSMA/CD-Systeme<br />

damit Kollisionen erkannt werden können. Außerdem wird hier die Zeit berechnet, die benötigt<br />

wird, um das Signal von einem Ende des Kabels zum anderen zu senden. Weiterhin wird die<br />

Adresse dem Mediumprozeß per Signal bekanntgegeben und erst dann ist der Prozeß bereit,<br />

siehe Abbildung 6-16.<br />

Die eigentliche Paketübertragung wird durch den Empfang des Signals MADataReq initiiert,<br />

siehe Abbildung 6-17 oben links. Der MAC-Frame wird zusammengestellt und hat die Mindestlänge<br />

minframe. Wenn der Rahmen zusammengestellt ist, wird das Medium “abgehört”. Den<br />

Zustand des Mediums zeigt die Variable stat an. Nur falls diese den Wert idle zeigt, darf gesendet<br />

werden. Da die Statusmeldungen gegenüber den Nutzdaten priorisiert werden, können Statuswechsel<br />

immer sofort den Prozessen zur Kenntnis gelangen.<br />

STATE ready;<br />

INPUT MaDataReq(dest, cont, servclass);<br />

TASK trials := 1;<br />

DECISION cont < Fix(minframe);<br />

(TRUE) : TASK len := Fix(minframe + 1);<br />

(FALSE) : TASK len := cont + 192;<br />

ENDDECISION;<br />

NEXTSTATE frameassembled;<br />

STATE frameassembled;<br />

PRIORITY INPUT StatusUpdate(stat);<br />

NEXTSTATE -;<br />

PROVIDED stat = idle;<br />

OUTPUT StatusUpdate(busy) VIA MACSig1;<br />

/*## REQUEST transmit(bitnr); ##*/<br />

NEXTSTATE starttrans;<br />

STATE starttrans;<br />

PRIORITY INPUT StatusUpdate(stat);<br />

DECISION stat;<br />

(busy) : /*## REQUEST transmit(len - bitnr) ##*/;<br />

OUTPUT MACFrame(dest, src, len, cont);<br />

OUTPUT MaDataCon(transOK);<br />

NEXTSTATE ready;<br />

(collide) : TASK trials := trials + 1;<br />

DECISION trials > maxtrials;<br />

(FALSE) : TASK k := CALL minimum(trials,10),<br />

upper := CALL pow(2,k),<br />

dist := init(dist,0,upper),<br />

r := sample(dist),<br />

backofftime := FLOAT(r) * 2.0 * propagationtime;<br />

NEXTSTATE waitbackoff;<br />

(TRUE) : OUTPUT MaDataCon(ExcessiveCollisionError);<br />

NEXTSTATE ready;<br />

ENDDECISION;<br />

ENDDECISION;<br />

Abbildung 6-17 Prozeß Transmission (Fortsetzung)<br />

STATE waitbackoff /*## awake backofftime ##*/;<br />

PRIORITY INPUT StatusUpdate(stat);<br />

NEXTSTATE -;<br />

INPUT NONE;<br />

NEXTSTATE frameassembled;<br />

113

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!